【GitLab管道】job、script、stages、variables

在每个项目中,使用名为.gitlab-ci.yml的YAML文件配置GibLab CICD管道。

job

在文件中可以定义一个或多个作业(job)。每个作业必须具有唯一的名称。作业定义了在约束条件下进行相关操作,每个作业至少要包含一个script。Job 被 Runner 拿到并在 Runner 的环境下执行。重要的是,每个 Job 都会与其他 Job 分离开来,独立进行。

job1:
 script: "execute-script-for-job1"
job2:
 script: "execute-script-for-job2"

这里在pipeline中定义了两个作业,每个作业执行不同的命令。命令可以是shell或脚本

Job 的保留字
script:Runner执行的命令或脚本。可以包含多条命令
image:使用的docker镜像。详见
services:使用的docker服务。详见
stage:定义job stage(默认:test)
type:stage的别名(已弃用)
variables:定义job级别的变量
only:定义一列git分支,并为其创建job
except:定义一列git分支,不创建job
tags:定义一列tags,用来指定选择哪个Runner(同时Runner也要设置tags)
allow_failure:允许job失败。失败的job不影响commit状态
when:定义何时开始job。可以是on_success,on_failure,always或者manual
dependencies:定义job依赖关系,这样他们就可以互相传递artifacts
cache:定义应在后续运行之间缓存的文件列表
before_script:重写一组在作业前执行的命令
after_script:重写一组在作业后执行的命令
environment:定义此作业完成部署的环境名称
coverage:定义给定作业的代码覆盖率设置

stages(阶段)

控制作业的顺序以及作业的并行运行

stages:
  - restore
  - compile
  - deploy

job1:
 stage: restore
 script:
  - echo 'job1 script'
job2:
 stage: compile
 script:
  - echo 'job2 script'
job3:
 stage: compile
 script:
  - echo 'job3 script'

.pre & .post

.pre始终是整个管道的第一个运行阶段,.post始终时整个管道的最后一个运行阶段。用户定义的阶段都在两者之间运行。.pre和.post的顺序无法更改。如果管道仅包含.pre或.post阶段的作业,则不会创建管道。
在上面脚本基础上添加job4、job5:

job4:
 stage: .pre
 script:
  - echo "job4 script"
job5:
 stage: .post
 script:
  - echo "job5 script"

script

每个作业至少包含一个script

job:
 script:
  - echo 1>a
  - cat a

before_script

用于定义一个命令,该命令在每个作业之前运行。必须是一个数组。
before_script和主脚本在一个shell中执行,所以before_script失败会导致整个作业失败,其他作业将不再执行。作业失败不会影响after_script运行
可以定义全局脚本,也可以在作业中定义。当在作业中定义before_script,会替换全局before_script

after_script

定义的命令在作业之后运行,after_script 是独立执行的。(在新的shell中运行)

before_script:
 - echo "before script!!"
after_script:
 - echo "after script!!"

variables

GitLab CI允许你为.gitlab-ci.yml增加变量,该变量将会被设置入任务环境。这些变量是你存储在git仓库里,并且非敏感的项目配置
可以定义全局变量,也可以在作业中定义

variables:
 DOMAIN: meshop.com
posted @ 2022-04-25 23:27  .Neterr  阅读(718)  评论(0编辑  收藏  举报