• 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:结构完整性问题
  • 相关阅读:
    Android源码服务专家(申明:来源于网络)
    Android超精准计步器开发-Dylan计步(申明:来源于网路)
    eclipse中一个项目引用另一个项目的方法(申明:来源于网络)
    javaweb(二十九)——EL表达式
    javaweb学习总结(二十八)——JSTL标签库之核心标签
    javaweb(二十六)——jsp简单标签标签库开发(二)
    javaweb(二十四)——jsp传统标签开发
    javaweb(二十三)——jsp自定义标签开发入门
    javaweb(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
    javaweb(二十一)——JavaWeb的两种开发模式
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/16377464.html
Copyright © 2020-2023  润新知