问题描述
我们使用 Git-Flow 使用 Gitlab-CI 自动构建和发布。
develop
分支上的每次提交都会触发构建阶段。
master
分支上的每次提交首先触发构建阶段,然后触发 release
阶段(使用构建阶段的工件)。
每当我们在 git 存储库中完成发布时,这意味着在 develop
和 master
分支上提交。这也会触发两个分支上的构建阶段,从完全相同的源版本构建(此时有两个不同的提交包含完全相同的代码)。
我想避免在开发分支上构建,但仅限于这种特殊情况。
我认为使用 .gitlab-ci.yml
内部的逻辑是不可能的,但这没关系。如果我能认识到这种情况并尽早结束构建脚本,我会很高兴。
我认为这意味着必须满足以下条件:
我可以用什么 git 魔法来识别 develop
分支中的某个提交是否属于这种情况?
我为此使用 Python,但我希望能用任何编程语言提供有用的答案:-)
解决方法
也许你可以在 gitlab-ci.yml 中使用 only
deploy-dev:
stage: deploy-dev
script:
- ./somescript.sh
only:
refs:
- develop
deploy-prod:
stage: deploy-prod
script:
- ./somescript.sh
only:
refs:
- master
- tags