rails 测试在 gitlab 管道中不起作用

rails tests not working in gitlab pipeline

在我想自动测试我的 rails 代码之后,将它推送到 master 我的测试不是 运行。

我测试代码的阶段如下所示:

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

我不明白为什么不能识别“&&”后面的命令。

要 运行 docker 中的多个命令,请使用 /bin/bash -c 和分号 ; 或者您也可以在 Docker 容器中使用管道命令

您可以尝试这样的操作:

docker run --rm $CONTAINER_IMAGE:test /bin/bash -c "RAILS_ENV=test && rails test RAILS_ENV=test"