其他分享
首页 > 其他分享> > GitLab CI/CD关键词(八):默认配置 default,初始化inherit

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下可以配置的关键词有

看一个例子

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。是不是非常灵活,方便。开发者可以自由控制使用全局变量。

标签:CI,GitLab,default,关键词,variables,配置,inherit,全局变量
来源: https://www.cnblogs.com/sanduzxcvbnm/p/16377515.html