Gitlab 停止 CI 如果 Dockerized R CMD 检查 return 错误

Gitlab stop CI if Dockerized R CMD check return errors

如果测试阶段 return 出错,我怎样才能让我的 CI 管道失败?

这是我的测试阶段:

Test:
  stage: Test
  script:
    - docker build -t r-docker-ci-test -f test.Dockerfile .
    - docker run r-docker-ci-test

这是我的test.Dockerfile:

FROM r-base

RUN apt-get update && apt-get install -y libcurl4-openssl-dev libssl-dev libxml2-dev

RUN R -e "install.packages(c('devtools', 'testthat'), dependencies=TRUE)"

COPY . /usr/local/src/test
WORKDIR /usr/local/src/test

CMD R -e "devtools::check()"

这是输出:

R CMD check results
1 error  | 2 warnings | 2 notes
.
.
.
Job succeeded

GitLab 和 Docker 正在按预期工作,更多的是关于您 运行 命令的退出代码的问题,您的问题是即使它报告测试错误也是 0 .

您可以在 Dockerfile CMD 节中解决此问题,并按照建议 here.[= 将测试 运行 R 命令更改为 R CMD check 16=]

或者您可以在 GitLab 管道规范中解决 grep 非零退出代码的方法,如下所示:

Test:
  stage: Test
  script:
    - docker build -t r-docker-ci-test -f test.Dockerfile .
    - docker run r-docker-ci-test | | grep '^0\serror' > /dev/null