Continuous integration Gitlab CI:合并后参考源分支运行部署阶段

Continuous integration Gitlab CI:合并后参考源分支运行部署阶段,continuous-integration,gitlab-ci,continuous-deployment,continuous-delivery,Continuous Integration,Gitlab Ci,Continuous Deployment,Continuous Delivery,我有n个功能分支,将MR和合并为开发分支 我有一个分为3个阶段的管道: 阶段: -功能推送 -发展雷塔格先生 -开发mr卷展栏 功能推送在推送功能分支(而不是我们正在合并的开发分支)时运行。它将在docker图像中测试、构建和推送应用程序,该图像标有功能分支的名称 合并请求被批准和合并后(假设源分支通过了功能推送阶段),后两个阶段应在提交到分支develope时运行。它需要将新图像推出到一些k8s吊舱,并且需要源分支的名称来找到正确的图像 我想为此使用${CI\u MERGE\u REQUEST

我有n个功能分支,将MR和合并为
开发
分支

我有一个分为3个阶段的管道:

阶段:
-功能推送
-发展雷塔格先生
-开发mr卷展栏

功能推送
在推送功能分支(而不是我们正在合并的
开发
分支)时运行。它将在docker图像中测试、构建和推送应用程序,该图像标有功能分支的名称

合并请求被批准和合并后(假设源分支通过了功能推送阶段),后两个阶段应在提交到分支
develope
时运行。它需要将新图像推出到一些k8s吊舱,并且需要源分支的名称来找到正确的图像

我想为此使用
${CI\u MERGE\u REQUEST\u SOURCE\u BRANCH\u NAME}
,但我认为合并后运行的管道中不存在该变量,仅在
MERGE\u requests
管道上。这些似乎是在MR批准之前触发的,我不希望这样,因为这是一个部署

这是可能的还是我应该找到一种不同的方法


**编辑:**为了澄清,我需要在MR之前运行我的docker构建,以知道它可以成功构建。如果是合并的版本,我不想扔掉它,所以我想在MR之前构建/推送,在MR之后部署以前构建的映像。

我正在寻找相同的版本

目前,我解析mergecommit的提交标题以提取源分支,并检查找到的分支是否确实存在。以下是相关代码:

CI_MERGE_REQUEST_SOURCE_BRANCH_NAME=$(sed -r "s/^Merge branch '(.*)' into .*/\1/i"<<<$CI_COMMIT_TITLE)

if [ $(git ls-remote --heads ${CI_REPOSITORY_URL} $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME | wc -l ) -ne 1 ]; then echo "Can't find source branche ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME})" && exit 1; fi

CI\u MERGE\u REQUEST\u SOURCE\u BRANCH\u NAME=$(sed-r“s/^MERGE BRANCH'(.*)into.*/\1/i)”这是我考虑过但不喜欢的事情。现在我只是构建并丢弃容器,然后再次构建并在合并后推送/部署。为了节省一点时间,我只在预合并阶段运行测试。