(共556篇)
全部分类

CI/CD中的trigger--触发其他项目pipeline与子级pipeline
[ CICD ] 

trigger

gitlab 提供一种触发器类型的任务, 可以通过此类任务触发其他项目的 pipeline, 或者是在本项目中触发一个子级 pipeline

在这种任务里面, 有一些特殊的限制, 比如不能使用 before_script, script, after_script 等选项

触发器类型任务触发的 其他项目的 pipeline 或者本项目的子级 pipeline 中, when:manual 类型的 job 不会执行

trigger 类型任务本身,在 13.5 版本之后, 可以使用 when:manual 来控制是否通过手动触发

触发本项目的一个子级 pipeline

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
job1:
  stage: build
  trigger: path/child-pipeline.yaml

# 或者
job1:
  stage: build
  trigger:
    include: path/child-pipeline.yaml

# 或者
job1:
  stage: build
  trigger:
    include:
      - path/child-pipeline.yaml

# 或者
job1:
  stage: build
  trigger:
    include:
      - local: path/child-pipeline.yaml

触发其他项目的 pipeline

触发其他项目默认分支的 pipeline

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
job1:
  stage: build
  trigger: project-group/project-name

job1:
  stage: build
  trigger:
    include:
      - project: project-group/project-name
        ref: dev
        file: pipeline-file.yaml

trigger 类型任务的状态

默认情况下, 通过 trigger job 创建的 pipeline 一旦创建成功, 该 job 就会被标记为 success

可以通过 strategy: depend 改变这个行为, 下面的案例中, 只有子级 pipeline 返回 success 时, trigger 任务才会被标记为 success

1
2
3
4
5
job1:
  stage: build
  trigger:
    include: path/child-pipeline.yaml
    strategy: depend

forward 向子级 pipeline 传递变量

默认情况下, trigger job 中定义的 variables 会传递给子级 pipeline

1
2
3
4
job1:
  trigger: path/child-pipeline.yaml
  variables:
    VAR_1: "zhangsan"

如果想禁止这个行为, 可以使用 trigger:forward:yaml_variables 来设置:

1
2
3
4
5
6
7
job1:
  trigger:
    include: path/child-pipeline.yaml
    forward:
      yaml_variables: false
  variables:
    VAR_1: "zhangsan"

默认情况下, 不会把手动触发 pipeline 和计划任务 pipeline 中设置的变量传递给子级 pipeline, 如果想把它们也传递给子级 pipeline, 可以通过 trigger:forward:pipeline_variables 来设置:

1
2
3
4
5
6
7
job1:
  trigger:
    include: path/child-pipeline.yaml
    forward:
      pipeline_variables: true
  variables:
    VAR_1: "zhangsan"