语法1:only & except
explain
only和except.用分支策略来限制jobs构建:
- only定义哪些分支和标签的git项目将会被job执行。
- except定义哪些分支和标签的git项目将不会被job执行。
example
排除掉所有的分支,只允许以issue-开头的分支
job:
only:
- /^issue-.*$/
except:
- branches
语法2:rules
explain
- rules允许按顺序评估单个规则,直到匹配并为作业动态提供属性。
- rules不能only/except与only/except组合使用。
可用的规则:
- if (如果条件匹配)
- changes (指定文件发生变化)
- exists (指定文件存在)
example
- 如果DOMAIN的值匹配,则需要手动运行。
- 不匹配on_success。
- 条件判断从上到下,匹配即停止。
- 多条件匹配可以使用&& ||。
variables:
DOMAIN: aexample.com
stages:
- deploy
deploy:
stage: deploy
tags:
- deploy
script:
- echo "hello deploy!"
rules:
- if: '$DOMAIN == "example.com"'
when: manual
- if: '$DOMAIN == "aexample.com"'
when: delayed
start_in : '5'
- when: on_success
指定的文件存在change,exist类似
deploy:
stage: deploy
tags:
- deploy
script:
- echo "hello deploy!"
rules:
- changes:
- Dockerfile
when: manual
- when: on_success
语法3 使用rules_allow_failure:true
explain
在不停止管道本身的情况下允许作业失败或手动作业等待操作。
example
variables:
DOMAIN: example.com
stages:
- build
- deploy
build:
stage: build
tags:
- build
script:
- echo "mvn clean"
- echo "mvn install"
deploy:
stage: deploy
tags:
- deploy
script:
- ech "hello deploy"
rules:
- if: '$DOMAIN == "example.com"'
when: manual
allow_failure: true
- if: '$DOMAIN == "aexample.com"'
- when: on_success
语法4 workflow-rules-管道创建
explain
- 顶级workf1ow关键字适用于整个管道,并将确定是否创建管道。
- when:可以设置为always或never,如果未提供,则默认值always。
example
variables:
DOMAIN: example.com
workflow:
rules:
- if: '$DOMAIN == "aexample.com"'
when: always
stages:
- build
- deploy
build:
stage: build
tags:
- build
script:
- echo "mvn clean"
- echo "mvn install"
deploy:
stage: deploy
tags:
- deploy
script:
- ech "hello deploy"
rules:
- if: '$DOMAIN == "example.com"'
allow_failure: true
- if: '$DOMAIN == "aexample.com"'
- when: on_success