我想以这样一种方式配置我的流水线,即根据传递参数选择阶段。例如,我有3个场景,场景1,场景2和场景3。
Scenario 1 have following stages
stages:
- deploy
- test
- job2
Scenario 2 have following stages
stages:
- deploy
- test
- regression
Scenario 3 have following stages
stages:
- deploy
- test我想这样配置我的yml,取决于这些流水线执行的任何参数或条件。
Like
if(true){
Scenario 1
}else if {
Scenario 2
}.....我不想使用子管道。
如果可能的话,请告诉我。
发布于 2021-02-02 23:31:37
在Gitlab中无法定义这样的管道。尽管您可以将模板或作业include到.gitlab-ci.yml文件中,但在运行时它仍然是一个管道。
在作业上使用rules关键字可以得到相同的结果(只根据需要的条件运行一些作业)。例如,您的.gitlab-ci.yml文件可能如下所示:
stages:
- deploy
- test
- regression
Scenario 1 Deploy Job:
stage: deploy
when: never
rules:
- if: "$CI_COMMIT_REF_NAME == main && $CI_PIPELINE_SOURCE == trigger"
when: always
start_in: 3 hours
- if: "$CI_PIPELINE_SOURCE == schedules"
when: manual
allow_failure: true
Scenario 1 Test Job:
...rules关键字允许您定义条件,以决定何时将作业添加到正在运行的管道中。如果一个作业有多个if(如“场景1部署作业”),它们将被视为OR (如果这样或那样),但是多个内联条件可以使用&&或||。
因此,总而言之,管道只能有一组阶段,项目只能有一个管道定义,但您可以控制何时运行每个作业。
https://stackoverflow.com/questions/66003406
复制相似问题