Gitlab CI如何确定PHPUnit测试是通过还是失败?
我有一个基本的Gitlab CI如何确定PHPUnit测试是通过还是失败?,php,unit-testing,continuous-integration,gitlab,devops,Php,Unit Testing,Continuous Integration,Gitlab,Devops,我有一个基本的.gitlab ci.yml文件 image: php:7.2 before_script: # install git - apt-get update -yqq - apt-get install git -yqq # Install composer - curl -sS https://getcomposer.org/installer | php # Install all project dependencies - php compose
.gitlab ci.yml
文件
image: php:7.2
before_script:
# install git
- apt-get update -yqq
- apt-get install git -yqq
# Install composer
- curl -sS https://getcomposer.org/installer | php
# Install all project dependencies
- php composer.phar install
tests:
script:
- vendor/bin/phpunit tests
这很好,如果单元测试失败或通过,它会提醒我
我的问题是Gitlab CI究竟是如何知道这一点的?他们是否解析PHPUnit的输出并查看字符串
是否失败代码>存在?gitlab ci只检查内部运行的进程的退出代码。如果进程退出时状态代码不是0,则管道停止并声明失败。这就是CI管道的总体工作方式,不仅是gitlab,还有Jenkins等等。返回除0以外的任何其他退出代码的脚本都被视为失败。@SaschaFrinken您能简要解释一下与PHPUnit相关的退出代码吗?你的意思是说PHPUnit内部返回0还是1?Gitlab CI是如何阅读的?PHPUnit对人的输出只是测试:1,断言:1,失败:1
或OK(1测试,1断言)
@SaschaFrinken我知道这一点,但我的问题是这与Gitlab CI有什么关系?它似乎神奇地知道测试是否失败或通过。如果我使用的是自制或私人测试软件,我想知道Gitlab CI如何知道我返回的是通过测试还是失败测试。您的单元测试只是一个脚本,当所有测试通过时,它将返回0
作为退出代码。CI检查返回代码并将其处理为失败或通过代码>或echo 0代码>是否通过并失败?否,echo
只打印您传递给它的标准字符串。对于通过和失败的CI,它将是exit 0
和exit 1
。您的意思是以书面形式使用exit(0)代码>或退出(1)代码>是。我的例子来自bash,这就是为什么它没有括号,我明白了。从不知道exit()代码>除了终止脚本执行之外还有其他特殊用途。