我想防止使用gitlab CI测试规则来检查TODO注释(或其他有问题的字符串)。我在这里添加了最后一行:
.job_template: &template_test
image: python:3.6-stretch
tags:
- python
# ...
stages:
- test
test:
<<: *template_test
stage: test
script:
- flake8 *.py
- ! grep TODO *.py
Run Code Online (Sandbox Code Playgroud)
但是,当我查看运行器的输出时,它失败了:
$ flake8 *.py
$ grep TODO *.py
ERROR: Job failed: exit code 1
Run Code Online (Sandbox Code Playgroud)
Gitlab似乎吞下了感叹号!,该感叹号在外壳中用于抵消grep的返回值。
! grep ...开头必须带有感叹号()的行。但是,即使this('! grep ...')在这里也不起作用,返回码也始终为零。我从/sf/answers/2208493941/获得了解决方案,必须启动子外壳程序,因为GitLab CI使用来启动外壳程序set -e。这应该可行并且相当短:
script:
...
- (! grep TODO *.py)
Run Code Online (Sandbox Code Playgroud)
是YAML 中的保留字符!,因此这不起作用。
但是,在这种情况下,您可以使用if..then表达式:
- if [ "$(grep TODO *.py)" != "" ]; then exit 1; fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |