rails 测试在 gitlab 管道中不起作用
Posted
技术标签:
【中文标题】rails 测试在 gitlab 管道中不起作用【英文标题】:rails tests not working in gitlab pipeline 【发布时间】:2019-07-25 13:24:57 【问题描述】:在我想自动测试我的 Rails 代码后,将其推送以掌握我的测试没有运行。
我的代码测试阶段如下所示:
test_code:
stage: test_code
script:
- docker pull $CONTAINER_IMAGE:test || true
- docker build -f Dockerfile.test --cache-from $CONTAINER_IMAGE:test --tag $CONTAINER_IMAGE:test .
- docker run --rm $CONTAINER_IMAGE:test rails db:migrate RAILS_ENV=test && rails test RAILS_ENV=test
- docker push $CONTAINER_IMAGE:test
这是管道的输出:
$ docker run --rm $CONTAINER_IMAGE:test rails db:migrate RAILS_ENV=test && bundle exec rails test
== 20181005152311 CreateUsers: migrating ======================================
-- create_table(:users)
-> 0.0014s
== 20181005152311 CreateUsers: migrated (0.0014s) =============================
/bin/sh: eval: line 86: rails: not found
ERROR: Job failed: exit code 127
我不明白为什么“&&”后面的命令无法识别。
【问题讨论】:
【参考方案1】:要在 docker 中运行多个命令,请使用 /bin/bash -c
和分号 ;
或者您也可以使用也可以在 Docker 容器中使用管道命令
你可以试试这样的:
docker run --rm $CONTAINER_IMAGE:test /bin/bash -c "RAILS_ENV=test && rails test RAILS_ENV=test"
【讨论】:
bash 在 Alpine-Linux 中不可用,我可以这样做吗?/bin/sh -c "..."
以上是关于rails 测试在 gitlab 管道中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
sass-rails 助手“image-url”、“asset-url”在 rails 3.2.1 中不起作用