gitlab--include 引入其他 ci 文件、extends 继成模板作业

简介: gitlab--include 引入其他 ci 文件、extends 继成模板作业

include


include 可以允许引入外部 yaml 文件,文件具有扩展名 .yml 或 .yaml 。使用合并功能可以自定义和覆盖包含本地定义的 CI/CD 配置,相同的 job 会合并,参数值以源文件为准

local

引入同一存储库中的文件,使用相对于根目录的完整路径进行引用,与配置文件在同一分支上使用

在项目下创建一个 ci 目录,在里面创建一个 localci.yml 文件,写入下面内容

stages:
  - deploy
deployjob:
  stage: deploy
  script:
    - echo 'my is deploy'

在根目录下的 .gitlab-ci.yml 里写入下面内容

stages:
  - build
  - deploy
  - test
include:
  local: 'ci/localci.yml' # 引用本地的文件,使用 local
buildjob:
  stage: build
  script: ls
testjob:
  stage: test
  script: ls

运行流水线,查看流水线,可以看到引入的本地的 ci 文件也执行了

file

file 可以引用另一个项目下的文件

在 test01 项目下创建一个 .gitlab-ci.yml 文件,写入下面内容

stages:
  - unit
  - deploy
deploy:
  stage: deploy
  script:
    - echo 'my is deploy'
unit:
  stage: unit
  script:
    - echo 'my is unit'

在项目中引入 test01 项目下 /ci/.gitlab-ci.yml 文件

stages:
  - build
  - deploy # 要写 deploy,虽然是引用的,但也要写
  - unit # 要写 unit,虽然是引用的,但也要写
  - test
include:
  - project: gitlab-instance-460cd741/test01 # 项目路径,到项目就可以,不需要到项目下的目录
    ref: main # 分支
    file: 'ci/.gitlab-ci.yml' # 具体的文件
buildjob:
  stage: build
  script: ls
testjob:
  stage: test
  script: ls

project 对应的是下面的这里的


查看流水线

template

只能使用官方提供的模板 https://gitlab.com/gitlab-org/gitlab/tree/master/lib/gitlab/ci/templates

include:
  - template: Auto-DevOps.gitlab-ci.yml
remote

用于通过 HTTP / HTTPS 包含来自其他位置的文件,并使用完整 URL 进行引用. 远程文件必须可以通过简单的 GET 请求公开访问,因为不支持远程 URL 中的身份验证架构

在 gitee 创建个项目,在里面创建一个 .gitlab-ci.yml 文件

内容如下

在引用远程的 ci 地址

stages:
  - build
  - deploy
  - unit
  - test
include:
  - remote: 'https://gitee.com/zouzou_busy/devops_test/raw/master/.gitlab-ci.yml' # 引入远程的 ci 文件?
buildjob:
  stage: build
  script: ls
testjob:
  stage: test
  script: ls



extends


extends 用来继成模板,如果源文件有的,会覆盖模板里的,源文件里没有的,会继承模板里的

例如下面的

stages:
  - build
  - test
.test: # 模板以 . 开头
  stage: test
  before_script:
    - echo "我是before_script"
  script:
    - echo "哈哈哈"
buildjob:
  stage: build
  script: ls
testjob:
  extends: .test # 继承 .test 模板,有的会覆盖模板里的,没有的会继承
  before_script:
    - echo "我是在 script 前面运行的"
  after_script:
     - echo "我是after_script"
  script: 
    - echo "嘎嘎嘎"

合并之后的如下

testjob:
  stage: test # 源文件没有,继承
  before_script: # 源文件有,覆盖
    - echo "我是在 script 前面运行的"
  after_script: # 模板里没有,使用源文件的
     - echo "我是after_script"
  script: # 源文件有,覆盖
    - echo "嘎嘎嘎"



extends & include


上面我们是将模板和引入模板写在了一个文件里面,我们也可以使用 include 导入,然后在使用 extends 继承

这里以 local 导入为例,在 项目下创建一个 ci/localci.yml 文件,内容如下

stages:
  - deploy
deployjob:
  stage: deploy
  script:
    - echo 'my is deploy'
.template: # 模板
  stage: test
  script: 
    - echo "my is test"

在引入模板,继承模板

include:
  local: 'ci/localci.yml' # 可以导入其他项目的或者远程的,这里导入的是本地的 localci.yml 文件,可以使用里面所有定义的 job
stages:
  - build
  - test
  - deploy
buildjob:
  stage: build
  script: ls
testjob:
  extends: .template # 继承导入里的 .template 模板
  before_script:
    - echo "我是在 script 前面运行的"
  after_script:
     - echo "我是after_script"

合并后的 yaml 如下

testjob:
  stage: test
  before_script:
    - echo "我是在 script 前面运行的"
  after_script:
     - echo "我是after_script"
  script: 
    - echo "my is test"

查看流水线



相关文章
|
7月前
|
数据可视化 Shell Linux
shell+crontab+gitlab实现ecs服务器文件的web展示
本文通过把ecs服务器上的文件定时上传至gitlab,实现文件的页面可视化和修改历史。技术点:shell、crontab、gitlab。
101 3
|
2月前
|
缓存 监控 数据可视化
利用GitLab CI/CD自动化您的软件开发流程
【10月更文挑战第10天】GitLab CI/CD 是 GitLab 内置的持续集成和持续部署工具,通过编写 .gitlab-ci.yml 文件,可以自动化构建、测试和部署应用程序的过程。本文介绍 GitLab CI/CD 的核心优势、实施步骤及在现代开发中的应用,帮助您提高开发效率和软件质量。
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
83 0
|
2月前
|
JavaScript 测试技术 持续交付
使用 GitLab CI/CD 管道自动化部署 Web 应用
【10月更文挑战第2天】使用 GitLab CI/CD 管道自动化部署 Web 应用
82 0
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
244 0
|
4月前
|
数据可视化 jenkins 测试技术
GitLab CI/CD 和 Jenkins对比
8月更文挑战第25天
510 5
|
4月前
|
安全 Shell 数据安全/隐私保护
CI/CD笔记.Gitlab系列:控制台强制修改root用户密码
CI/CD笔记.Gitlab系列:控制台强制修改root用户密码
180 2
|
4月前
CI/CD笔记.Gitlab系列:设置GitLab导入源
CI/CD笔记.Gitlab系列:设置GitLab导入源
281 2
|
4月前
|
数据安全/隐私保护
CI/CD笔记.Gitlab系列.新用户管理
CI/CD笔记.Gitlab系列.新用户管理
51 1
|
4月前
|
存储 Ubuntu jenkins
CI/CD 工具比较:Jenkins、GitLab CI、Buildbot、Drone 和 Concourse
CI/CD 工具比较:Jenkins、GitLab CI、Buildbot、Drone 和 Concourse
240 0