1、only&ecxept-限制分支标签(逐渐被rules所替代)
only和except用分支策略来限制jobs构建:
only定义哪些分支和标签的git项目将会被job执行。
except定义哪些分支和标签的git项目将不会被job执行。
job:
# use regexp
only:
- /^issue-.*$/
# use special keyword
except:
- branches
2、rules-构建规则
rules允许按顺序评估单个规则,直到匹配并为作业动态提供属性。
rules不能与only/except:组合使用。
可用的规则 :
if (如果条件匹配)
changes(指定文件发生变化)
exists(指定文件存在)
2.1、rules-if-条件匹配
如果DOMAIN的值匹配,则需要手动运行。
不匹配on_success.
条件判断从上到下,匹配即停止。
多条件匹配可以使用&& || 。
variables:
DOMAIN: example.com
codescan:
stage: codescan
tags:
- build
script:
- echo "codescan"
- sleep 5
#parallel:5
rules:
- if: '$DOMAIN == "example.com"'
when: manual
- when: on_success
2.2、rules-changes-文件变化
接受文件路径数组。
如果提交中Jenkinsfile文件发生的变化则为true。
codescan:
stage: codescan
tags:
- build
script:
- echo "codescan"
- sleep 5
#parallel:5
rules:
- changes:
- Jenkinsfile
when: manual
- if: '$DOMAIN == "example.com"'
when: on_success
- when: on_success
2.3、rules-exists-文件存在
接受文件路径数组
当仓库中存在指定的文件时操作
codescan:
stage: codescan
tags:
- build
script:
- echo "codescan"
- sleep 5
#parallel:5
rules:
- exists:
- Jenkinsfile
when: manual
- changes:
- Jenkinsfile
when: on_success
- if: '$DOMAIN == "example.com"'
when: on_success
- when: on_success
2.4、rules-allow_failure
使用allow_failure: true
rules: 在不停止管道本身的情况下允许作业失败或者手动作业等待操作。
job:
stage: job
script: "echo Hello,Rules!"
rules:
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"'
when: manual
allow_failure: true
在此示例中,如果第一个规则匹配,则作业将具有以下when: manual和allow_failure:: true。
3、workflow-rules-管道创建
顶级workflow关键字适用于整个管道,并将确定是否创建管道。
when: 可以设置为always或never,如果未提供,则默认值always。
workflow:
rules:
- if: '$DOMAIN == "example.com"'
- when: always
评论区