ICode9

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

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

2022-06-15 10:34:15  阅读:243  来源: 互联网

标签:CI GitLab default 关键词 variables 配置 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。是不是非常灵活,方便。开发者可以自由控制使用全局变量。

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

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

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

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

ICode9版权所有