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
如果测试阶段 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