【问题标题】:Running tests with Docker and Jenkins - Test Result使用 Docker 和 Jenkins 运行测试 - 测试结果
【发布时间】:2016-05-26 01:13:16
【问题描述】:

我有一个用 Rails 编写的应用程序。为了测试它,我构建了一个 docker 映像。一切正常。

但是,当我将 Jenkins 配置为运行这些测试时,就会出现问题。这是我在构建步骤中所做的:

docker-compose up rspec

其中 rspec 是在 docker-compose.yml 中定义的服务,包含以下命令:

command: "rspec spec/"

当 rspec 返回错误时,构建仍然成功。 这里是一个输出示例:

    ...
21:42:24 [36mrspec_1  |[0m       should save second profile
21:42:24 [36mrspec_1  |[0m 
21:42:24 [36mrspec_1  |[0m Failures:
21:42:24 [36mrspec_1  |[0m 
21:42:24 [36mrspec_1  |[0m   1) New profile Should persist new_profile_pricture
21:42:24 [36mrspec_1  |[0m      Failure/Error: jump_to_four_phase_with(new_profile_picture)
21:42:24 [36mrspec_1  |[0m      RuntimeError:
21:42:24 [36mrspec_1  |[0m        Timeout for '#new_profile' (1) appearance reached!
...
21:42:25 [36mcomposes_rspec_1 exited with code 1
21:42:25 [0m[Profiler] $ /bin/sh -xe /tmp/hudson4606189750126491465.sh
21:42:25 Finished: SUCCESS

36mcomposes_rspec_1 返回 1 并且构建仍然成功。

如果我通过 docker ps -a 的 id 检查容器,我会得到“Exited (1) 2 minutes ago”

你们知道怎么回事吗?

当容器失败时,有没有一种简单的方法让构建失败?

【问题讨论】:

    标签: ruby-on-rails jenkins rspec docker continuous-integration


    【解决方案1】:

    Jenkins 使用进程的退出状态来判断成功或失败。

    docker-compose up 旨在编排许多容器。当您处理多个服务/容器时,关于成功和失败的构成有一点灰色地带。 docker-compose 在退出时报告的所有内容是 docker-compose 命令成功完成,而不是它运行的所有容器都正常。

    docker-compose run <service> <command> 将为服务运行单个命令并返回该命令的退出状态。

    如果您依赖多个服务/容器进行测试,那么让docker-compose up 只启动所需的服务。然后运行docker-compose run rubyservice rspec 进行测试。

    撰写分离

    如果您希望将测试与应用容器分开,请创建第二个 docker-compose-test.yml 文件,其中包含仅用于测试的服务定义。

    version: "2.1"
    tests:
      build:
        context: .
        dockerfile: Dockerfile.tests
      cmd: rspec
    

    主应用容器启动后,运行

    docker-compose -f docker-compose-test.yml run tests
    

    【讨论】:

    • 请注意,您需要在docker-compose 命令中包含服务名称。所以,它将是docker-compose run web rspec。 - docs.docker.com/compose/reference/run
    • 太棒了,没问题!
    • docker-compose run 似乎没有-f 标志,至少在最新版本(18.03)中没有
    • @oscfri 你是对的,它比docker-compose 本身更上一层楼
    猜你喜欢
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    相关资源
    最近更新 更多