如何添加规则:当指定文件缺失时跳过CI流水线任务
问题
现有一条流水线任务规则,仅当设置了do_job且未设置skip_job时,该任务才会被加入流水线,原规则如下:
rules: - if: $skip_job == "true" when: never - if: $do_job != "false"
需要添加规则,使得当tasks.yml和inputs.yml这两个文件中的任意一个缺失时,也跳过该任务。
解决方案
你可以通过添加does_not_exist规则实现需求,只要两个文件中任意一个不存在,就触发when: never跳过任务。最终规则有两种写法:
写法一:分开检查每个文件
rules: - if: $skip_job == "true" when: never - does_not_exist: tasks.yml when: never - does_not_exist: inputs.yml when: never - if: $do_job != "false"
写法二:合并检查多个文件
如果想简化规则,也可以把两个文件的检查合并成一条,只要其中任意一个不存在就跳过:
rules: - if: $skip_job == "true" when: never - does_not_exist: - tasks.yml - inputs.yml when: never - if: $do_job != "false"
规则逻辑说明
- 第一条规则:当
skip_job被设置为"true"时,直接跳过任务 - 文件检查规则:只要
tasks.yml或inputs.yml任意一个不存在,就跳过任务 - 最后一条规则:只有当
do_job的值不等于"false"时,任务才会被加入流水线
只有同时满足**未设置skip_job、两个文件都存在、do_job未被设为false**这三个条件时,任务才会被执行。
内容的提问来源于stack exchange,提问作者Velkan
相关产品推荐
相关产品推荐

