only & except 限制分支标签
only和except用分支策略来限制jobs构建:
- only定义哪些分支和标签的git项目将会被job执行
- except定义哪些分支和标签的git项目将不会被job执行
job:
only:
- /^issue-.*$/ # 只对该正则表达式匹配的分支构建
except:
- branches
rules 构建规则
- rules 允许按顺序评估单个规则,直到匹配并为作业动态提供属性。
- rules 不能与only/except组合使用
可用的规则:
- if (如果条件匹配)
- changes (指定文件发生变化)
- exists (指定文件存在)
rules-if-条件匹配
- 如果DOMAIN的值匹配,则需要手动运行。
- 不匹配on_success
- 条件判断从上到下,匹配即停止
- 多条件匹配可以使用 && ||
before_script:
- echo "before script" # 每次job运行时候会输出,
variables:
DOMAIN: example.com
stages:
- build
build:
stage: build
tags:
- build
script:
- echo "build"
- sleep 5
rules:
- if: '$DOMAIN == "example.com"'
when: manual
- if: '$DOMAIN == "ruby.com"'
when: delayed
start_in: '5'
- when: on_success
rules-changes 文件变化
- 接受文件路径数组
- 如果提交中jenkinsfile文件发生变化则为true
before_script:
- echo "before script" # 每次job运行时候会输出,
variables:
DOMAIN: example.com
stages:
- build
build:
stage: build
tags:
- build
script:
- echo "build"
- sleep 5
rules:
- changes:
- Dockerfile
- README.md
when: manual
rules-exists 文件存在
当仓库中存在指定的文件时操作
workflow-rules 管道创建
- 顶级workflow关键字适用于整个管道,并将确定是否创建管道
- when: 可以设置为always或never,如果未提供,则默认值always
variables:
DOAMIN: example.com
workflow:
rules:
- if: '$DOMAIN == "example.com"'
when: always