GitLab CI/CD关键词(六):代码覆盖率coverage,运行失败allow_failure,重试retry
作者:互联网
文章转载自:https://cloud.tencent.com/developer/article/1994944
简介
本篇文章讲解的三个关键词分别是 coverage,allow_failure,与retry。coverage是用于收集流水线中的代码覆盖率,可以指定正则格式。allow_failure关键词用于限定当前作业允许允许失败。retry 用于设置当前作业重试次数。下面看一下详细的讲解。
代码覆盖率 coverage
coverage 是一个作业关键词,只能应用在具体作业上。
关键词coverage 用于提前日志中的覆盖率,你可以设置一个正则表达式,如果当前作业的日志命中了该表达式,覆盖率将会被提取出来。如果命中了多个,将以最后一个为准,提取出来的覆盖率可以显示到项目UI上。 以下是一个使用示例
test:
script:
- echo "test coverage 67.89% of lines covered"
- echo "test coverage 99.89% of lines covered"
coverage: '/test coverage \d+\.\d+/?/'
上面的例子打印了二句话,都会命中coverage的正则表达式。查看作业日志
如果该作业配置了coverage,那么在作业的详情 右上角会有一个Coverage的信息。除此之外,在项目的的流水线中就可以看到 覆盖率的显示支持使用md,html的格式 或 AsciiDoc。
正常来讲,这里应该也会有数据的,但目前没有,可能是数据还没上传的原因。
隔天查看,果然有数据了。
此外在.gitlab-ci.yml
中设置的coverage,要比在CI/CD中设置的优先级高
允许失败 allow_failure
默认情况下,如果流水线中有运行失败的作业,流水线将停止运行,但凡事都有例外,如果我们在研发环境提交了一下临时测试代码,而这些代码并不要求全部通过测试用例,也就是说这个时候我们运行一些作业失败,并将代码部署到研发环境。这个时候我们就可以使用allow_failure关键词来配置作业。allow_failure的值只有 true和false。默认为false,即不允许失败。方法如下:
install:
stage: test
script:
- execute_script_1
test:
stage: test
script:
- execute_script_2
allow_failure: true
deploy:
stage: deploy
script:
- deploy_to_staging
作业test使用allow_failure: true修饰后,即使作业test运行失败,下一阶段deploy的作业deploy也会被运行。但如果作业install作业失败了,那么下一阶段deploy的作业deploy也不会被运行。
有一些细节需要注意:当一个作业是手动作业时,默认地allow_failure为true。使用rules的手动作业allow_failure为false。
当开发者想要针对特定的错误代码而允许作业失败时。可以使用allow_failure:exit_codes。开发者配置一个或多个exit_codes 来规定特殊的错误类型才运行通过。
下面是一个例子
test_job_1:
script:
- echo "Run a script that results in exit code 1. This job fails."
- exit 1
allow_failure:
exit_codes: 137
test_job_2:
script:
- echo "Run a script that results in exit code 137. This job is allowed to fail."
- exit 137
allow_failure:
exit_codes:
- 137
- 255
对于这个exit_codes官方并没有明确的说明列表。靠自己调试吧。
重试 retry
当作业失败时,GitLab CI/CD提供了一种重试机制,使用retry关键词可以配置当前作业在失败的情况下,重试的次数。默认地retry为0,即失败后不重试。retry的值只能是0,1,2。当设置2时,当前作业最多会执行3次。除此之外retry也可以规定在特定的错误下才去重试。以下是一个例子。
重试 retry
当作业失败时,GitLab CI/CD提供了一种重试机制,使用retry关键词可以配置当前作业在失败的情况下,重试的次数。默认地retry为0,即失败后不重试。retry的值只能是0,1,2。当设置2时,当前作业最多会执行3次。除此之外retry也可以规定在特定的错误下才去重试。以下是一个例子。
上面的例子,test作业会在运行失败后自动重试,最多重试2次。deploy作业会在发生 runner_system_failure错误时,重试1次。
错误类型有以下:
- always: 任何错误类型
- unknown_failure: 未知原因的错误
- script_failure: script运行失败
- api_failure: API 失败
- stuck_or_timeout_failure: 作业卡住或超时
- runner_system_failure: runner的系统错误
- runner_unsupported: runner不支持
- stale_schedule: 延迟作业不能运行
- job_execution_timeout: 作业运行超过最大时长
- archived_failure: 作业被存档不能运行
- unmet_prerequisites: 因为先决作业而失败
- scheduler_failure: runner调度失败
- data_integrity_failure:结构完整性问题
标签:CI,retry,coverage,GitLab,作业,重试,failure,allow 来源: https://www.cnblogs.com/sanduzxcvbnm/p/16377464.html