• GitLab CI/CD关键词(八):默认配置 default,初始化inherit


    转载自:https://fizzz.blog.csdn.net/article/details/125095167

    前言

    在编写.gitlab-ci.yml文件时,我们可以定义一些全局配置,也可以在特定的作业中不使用这些全局配置。这将会让我们的流水线更加灵活多变、优雅。

    默认配置 default

    在GitLab CI/CD的流水线中存在几个全局关键词,设置后,这些配置对于整条流水线生效,如stages,include,workflow,default,variables。本篇文章就来详细讲解一下default的用法,了解之后会让你编写.gitlab-ci.yml更加优雅,美观,复用性更强。

    default是一个全局关键词,这意味着在default定义的配置,将会对整个流水线生效,那么default是用来定义什么的那?
    在default中你可以将一些关键词配置成全局配置。配置后这些配置项将对每个作业生效,作为初始值,开发者也可以在作业中重新定义覆盖他们。说到这里 default的作用就比较明显的,就是提取一些公共配置,配置成全局生效。

    default下可以配置的关键词有

    • after_script
    • artifacts
    • before_script
    • cache
    • image
    • interruptible
    • retry
    • services
    • tags
    • timeout

    看一个例子

    default:
      image: ruby:3.0
    
    rspec:
      script: bundle exec rspec
    
    rspec 2.7:
      image: ruby:2.7
      script: bundle exec rspec
    

    在上面的例子,使用default定义了一个 image:ruby:3.0。这意味着整个流水线中所有的作业,如果没有指定image的话,都将默认使用镜像ruby.30,开发者也可以在作业中重新定义了image,如作业rspec 2.7。

    一些细节,当流水线创建时,在default下定义的关键词都将被追加到所有的作业中,如果作业有定义一些关键词,则会覆盖default中的定义。

    如果你想要控制当前作业是否使用default上定义的配置项,可以使用inherit关键词

    初始化inherit

    .gitlab-ci.yml中我们可以定义一些全局变量,或者在default中定义一些全局的配置项,但如果我们在某些作业上不想使用这些全局的配置,不继承全局变量,又不想重新覆盖。那该怎么办那? 不慌,inherit来帮忙。

    关键词inherit是一个作业关键词,它能够控制当前作业是否继承default或variables的配置项。简而言之就是控制是否使用使用全局配置或全局变量。
    在inherit下有两个配置项,一个是inherit:default 一个是 inherit:variables。前者用于控制是否继承default的配置项,以及继承那些配置项。 后者是用于控制是否继承全局变量,以及继承那些全局变量。

    先看看一下inherit:default,它的值可以是true(默认),或false。也可以是default下的一个关键词列表。看下面一个例子

    default:
      retry: 2
      image: ruby:3.0
      interruptible: true
    
    job1:
      script: echo "This job does not inherit any default keywords."
      inherit:
        default: false
    
    job2:
      script: echo "This job inherits only the two listed default keywords. It does not inherit 'interruptible'."
      inherit:
        default:
          - retry
          - image
    

    在job1中 使用inherit:default: false。这样设置后,job1将不会继承default的配置项。

    在job2中,inherit:default 为两个关键词,这意味着job2只会继承default中的retry,image两个关键词的配置项,而不会继承interruptible。

    看完了inherit:default后,我们在来看一下inherit:variables。

    与inherit:default 类似,inherit:variables是用于控制是否继承全局变量,值可以是true,false,也可以是全局变量列表,看下面这个例子

    variables:
      VARIABLE1: "This is variable 1"
      VARIABLE2: "This is variable 2"
      VARIABLE3: "This is variable 3"
    
    job1:
      script: echo "This job does not inherit any global variables."
      inherit:
        variables: false
    
    job2:
      script: echo "This job inherits only the two listed global variables. It does not inherit 'VARIABLE3'."
      inherit:
        variables:
          - VARIABLE1
          - VARIABLE2
    

    上面的例子展示了inherit:variables的使用, job不会继承全局变量。而job2只会继承全局变量VARIABLE1 与 VARIABLE2。是不是非常灵活,方便。开发者可以自由控制使用全局变量。

  • 相关阅读:
    转:spring-session
    转:SpringBoot项目如何进行打包部署
    事务的隔离级别
    获取打卡记录接口返回数据情况说明
    批注@SuppressWarnings 的作用
    mybatis-generator eclipse插件 使用方法
    几种常见数据库的driverClassName和url
    ssm 配置多个数据源
    常用正则表达式
    tomcat 配置成服务
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/16377515.html
Copyright © 2020-2023  润新知