Continuous integration Gitlab CI:合并后参考源分支运行部署阶段
我有n个功能分支,将MR和合并为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
开发
分支
我有一个分为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)”这是我考虑过但不喜欢的事情。现在我只是构建并丢弃容器,然后再次构建并在合并后推送/部署。为了节省一点时间,我只在预合并阶段运行测试。