我正在尝试实施GitLab CI Pipelines来构建和部署Angular应用。在我们的项目中,我们有两个一般分支:master
(仅限生产)和develop
。对于开发,我们从feature/some-feature
分支创建develop
个分支。开发完成后,我们会创建从feature/some-feature
到develop
的合并请求。当合并请求被批准并合并到develop
分支时,我想运行管道以构建应用程序并在某些环境中部署构建。
我在.gitlab-ci.yml中使用以下设置:
image: node:7.5-configured
stages:
- build
- deploy
build_job:
stage: build
only:
- develop
script:
- /bin/bash <some script here>
...
问题是每次推入任何feature/some-feature
分支时都会执行Pipeline。我的设置有什么问题?当直接执行develop
分支时,如何强制管道仅执行?
解决方案
这是我的错误 - 我在develop
分支和feature/some-feature
分支中有两个不同的.gitlab-ci.yml文件。
答案 0 :(得分:5)
我建议移动
only:
- develop
脚本后的标记:
标记答案 1 :(得分:5)
这是我的错误 - 我在develop
分支和feature/some-feature
分支中有两个不同的.gitlab-ci.yml文件,这就是为什么所有分支都执行了Pipeline的原因。
答案 2 :(得分:4)
尽管讨论已经过去了很多时间,但我还是想提出一个我大部分时间都在使用的意见。
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "master"'
when: on_success
changes:
- folder/some_folder/**/*
- if: '$CI_PIPELINE_SOURCE == "web" && $CI_COMMIT_BRANCH == "development"'
when: manual
changes:
- folder/some_other_folder/**/*
这个结构解决了我的各种问题,希望对你有帮助!
问候。
答案 3 :(得分:2)
您应该在运行CI的分支中添加.gitlab-ci.yml
文件。