thecodingmachine / washingmachine
与 Gitlab 集成的 CI 工具,用于显示 CRAP 指数中的差异
Requires
- czproject/git-php: ^3.8
- m4tthumphrey/php-gitlab-api: ^7.16
- mouf/picotainer: ^1.0
- symfony/console: ^3.0
- symfony/filesystem: ^3.0
Requires (Dev)
- phpunit/phpunit: ^5.7
- satooshi/php-coveralls: ^1.0
README
洗衣机
洗衣机 是一个工具,通过将 PHPUnit 与 Gitlab CI 集成,帮助您编写更干净的代码。
因此,当您在 Gitlab 中执行合并请求时,洗衣机会添加有关您的代码质量的有关信息。
使用方法
为您的项目启用 Gitlab CI
首先,您需要一个启用了持续集成的 Gitlab 项目(因此需要一个包含 .gitlab-ci.yml
文件的项目)。
创建个人访问令牌
然后,您需要一个 Gitlab API 个人访问令牌。
明白了吗?
添加秘密变量
现在,我们需要将此令牌添加为您的项目的“秘密变量”(以便 CI 脚本可以修改合并请求注释)。
转到您的 Gitlab 项目页面
设置 ➔ CI/CD 管道 ➔ 秘密变量
- 键:
GITLAB_API_TOKEN
- 值:您在上一步骤中收到的令牌
配置 PHPUnit 输出 "clover" 测试文件
让我们配置 PHPUnit。转到您的 phpunit.xml.dist
文件并添加
<phpunit>
<logging>
<log type="coverage-clover" target="clover.xml"/>
</logging>
</phpunit>
注意:“clover.xml” 文件必须写在您的 GIT 仓库根目录下,因此如果您的 phpunit.xml.dist
位于子目录中,正确的路径可能是“../../clover.xml”。
或者,洗衣机也知道如何读取 Crap4J 文件。Crap4J 文件包含 Crap 分数,但不包含代码覆盖率分数,因此您将从 Crap4J 获得略少的数据。预期文件名为 "crap4j.xml"。
配置 Gitlab CI yml 文件
现在,我们需要安装洗衣机,并让它运行。
.gitlab-ci.yml
image: php:7.1
test:
before_script:
- cd /root && composer create-project thecodingmachine/washingmachine washingmachine ^2.0
script:
- phpdbg -qrr vendor/bin/phpunit
after_script:
- /root/washingmachine/washingmachine run -v
请注意,我们需要确保已安装 PHPDbg 扩展。还要确保您的 Docker 实例上未启用 Xdebug。Xdebug 也可以返回代码覆盖率数据,但不如 PHPDbg 准确,可能导致错误的 CRAP 分数结果。
支持的 Gitlab 版本
- 洗衣机 v2.0+ 支持 Gitlab 9 及以上版本。
如果您需要支持旧版本的 Gitlab,以下是洗衣机版本支持的 Gitlab 版本列表
- 洗衣机 v1.0 => v1.2 支持 Gitlab 8。
- 洗衣机 v1.2+ 支持 Gitlab 8 及以上到 Gitlab 9.5。
在评论中添加额外数据
当洗衣机在您的合并请求中添加评论时,您可以要求它添加额外的文本。此文本必须存储在文件中。
您只需这样做
washingmachine run -f file_to_added_to_comments.txt
当然,此文件可能是 CI 工具的输出。
洗衣机只会显示文件的前 50 行。如果文件更长,将在评论末尾添加一个下载文件的链接。
您还可以通过重复使用“-f”选项添加多个文件
washingmachine run -f file1.txt -f file2.txt
提交问题
当合并请求打开时,洗衣机将在合并请求中直接发布评论。
如果不存在合并请求,洗衣机可以在您的 Gitlab 项目中提交问题。
要提交问题,请使用 --open-issue
选项
washingmachine run --open-issue
提示:通常,当构建失败时,您希望有条件地添加 --open-issue
标签。另外,如果合并请求与构建匹配,则忽略 --open-issue
。
在提交中添加评论
洗衣机可以直接在提交中添加注释(除了在合并请求中添加注释)。
要在提交中添加注释,请使用 --add-comments-in-commits
选项。
washingmachine run --add-comments-in-commits
注意:此选项在1.x版本中默认启用,而在2.x版本中需要手动启用。对于每条注释,都会向提交者发送一封邮件。在大规模提交中,这可能会生成大量邮件。已经提醒您了 :)