是否可以添加基于GitLab CI yml中用户输入的执行if或else块的条件?
如果用户输入是YES,那么它必须触发一个模板(可行的塔模板)来重新启动特定的服务(tower-cli job launch——job-template)
对于这样的条件,我应该使用rules:if
和when
吗?有人能对这种格式有什么见解吗?我是第一次使用Gitlab,对Jenkins有一些经验。
rules
部分(以及only
和except
)在管道首次创建时评估,但在第一个作业开始运行之前,因为它控制哪些作业将在管道中或不在管道中,因此您不能使用来自另一个作业或手动任务变量的变量/条件。
另一种方法是在脚本部分使用普通的bash条件,当作业不应该运行时,只使用exit 0;
。
...
Job:
stage: my_stage
when: manual
script:
- if [ $MY_USER_INPUT_VARIABLE == "don't run the job" ] then exit 0; fi
- ./run_job.sh
这些只是简单的例子,但是您检查变量是否需要它做任何事情(或者使用多个变量时使用多个条件),如果作业不应该运行,则执行exit 0;
,这将停止作业的处理,但不会将其标记为失败。否则,我们运行我们需要这个作业做的任何事情。