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()除了终止脚本执行之外还有其他特殊用途。