避免 Gitlab-CI 在完成发布时构建开发分支 (git-flow)

问题描述

我们使用 Git-Flow 使用 Gitlab-CI 自动构建和发布。

develop 分支上的每次提交都会触发构建阶段。

master 分支上的每次提交首先触发构建阶段,然后触发 release 阶段(使用构建阶段的工件)。

这很好用,只有一个我找不到解决方案的缺点:

每当我们在 git 存储库中完成发布时,这意味着在 developmaster 分支上提交。这也会触发两个分支上的构建阶段,从完全相同的源版本构建(此时有两个不同的提交包含完全相同的代码)。

我想避免在开发分支上构建,但仅限于这种特殊情况。

我认为使用 .gitlab-ci.yml 内部的逻辑是不可能的,但这没关系。如果我能认识到这种情况并尽早结束构建脚本,我会很高兴。

我认为这意味着必须满足以下条件:

  • 我们在 develop 分行。 (简单)
  • 当前提交已从 masterdevelop 合并。
  • 合并后的 master 提交附加了一个标签

我可以用什么 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...