其他分享
首页 > 其他分享> > GitLab CI/CD关键词(六):代码覆盖率coverage,运行失败allow_failure,重试retry

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次。

错误类型有以下:

标签:CI,retry,coverage,GitLab,作业,重试,failure,allow
来源: https://www.cnblogs.com/sanduzxcvbnm/p/16377464.html