ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

GitLab CI/CD关键词(六):代码覆盖率coverage,运行失败allow_failure,重试retry

2022-06-15 10:35:57  阅读:256  来源: 互联网

标签:CI retry coverage GitLab 作业 重试 failure allow


文章转载自: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有