gitlab-ci.yml 仅在 master 分支上
gitlab-ci.yml only on master branch
我有一个像这样的 gitlab-ci.yml 文件,我想 运行 它只在 Branch Master 上。如果推送到开发分支,管道应该 NOT 启动。
我尝试使用 'only' 关键字,但它显示错误。
stages:
- info
- build
- test
- review
- cleanup
- deploy-dev
- integration-test
- deploy-test
- system-test
- deploy-production
only:
refs:
- master
我觉得你这里有缩进问题。
它应该是这样的:
stages:
- job_1
- job_2
- ....
- job_n
job_1:
stage: job_1
....
only:
refs:
- master
job_2:
stage: job_2
....
only:
refs:
- master
....
您需要为每个阶段定义目标分支。
要为每个阶段定义触发规则,您可以使用 workflow 关键字,如下所示:
workflow:
rules:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_COMMIT_BRANCH == 'master'
这必须在您的 yaml 的“根”上,因为它不是任何工作的一部分。
在上面的示例中,我告诉管道在推送存储库标记时避免 运行ning,并且仅在主分支中完成提交时才 运行。
您可以以此为基础并添加其他条件来触发管道中的各个阶段,有关此问题的完整文档可在此处找到:https://docs.gitlab.com/ee/ci/yaml/#workflow
我有一个像这样的 gitlab-ci.yml 文件,我想 运行 它只在 Branch Master 上。如果推送到开发分支,管道应该 NOT 启动。
我尝试使用 'only' 关键字,但它显示错误。
stages:
- info
- build
- test
- review
- cleanup
- deploy-dev
- integration-test
- deploy-test
- system-test
- deploy-production
only:
refs:
- master
我觉得你这里有缩进问题。 它应该是这样的:
stages:
- job_1
- job_2
- ....
- job_n
job_1:
stage: job_1
....
only:
refs:
- master
job_2:
stage: job_2
....
only:
refs:
- master
....
您需要为每个阶段定义目标分支。
要为每个阶段定义触发规则,您可以使用 workflow 关键字,如下所示:
workflow:
rules:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_COMMIT_BRANCH == 'master'
这必须在您的 yaml 的“根”上,因为它不是任何工作的一部分。
在上面的示例中,我告诉管道在推送存储库标记时避免 运行ning,并且仅在主分支中完成提交时才 运行。
您可以以此为基础并添加其他条件来触发管道中的各个阶段,有关此问题的完整文档可在此处找到:https://docs.gitlab.com/ee/ci/yaml/#workflow