Jenkins GIT子模块标记不正确

时间:2015-06-12 07:48:43

标签: git jenkins tags git-submodules

我正在使用项目A和子模块项目B运行构建作业。 两个项目都有一个fork我们正在跟踪标签。

因此,给出了以下项目:

Project A
- Fork Project A-fork 
Project B (submodule of A)
- Fork Project B-Fork

目标: 构建之后,我想为A-fork和B-fork添加一个标签,以便知道在两个项目中都采用了哪些代码提交。

问题: 我正在向Jenkins GIT存储库添加A(名称“origin”),A-fork(forkA)和B-fork(forkB)。 高级子模块行为设置为“递归更新子模块”和“将跟踪子模块更新到分支的尖端”。

作为一个构建后的步骤,我通过控制台推送标签:

git push forkA refs/tags/${RELEASE_TAG} 
git push forkB refs/tags/${RELEASE_TAG} 

所以,现在真正的问题: 当执行这样的操作时,推送到forkB(我的子模块)的标记指的是我的父存储库A中的提交,但不是指用作B中子模块的最新代码。

我如何采用这个,以便我的标签指的是子模块B中的最新提交?

由于 基督教

1 个答案:

答案 0 :(得分:0)

好的,我知道修复它"手动"作为执行shell步骤。

git push forkA refs/tags/${RELEASE_TAG} 

# Cleanup workspace, keeping git config
find . ! -path . | grep -v ".git" | xargs rm -rf
HASH=`git rev-parse refs/remotes/forkB/master^{commit}`
git checkout -f ${HASH}
git tag -a ${RELEASE_TAG}-forkB -m "ForkB Ref: ${RELEASE_TAG}"
git push forkB refs/tags/${RELEASE_TAG}-forkB

不是很好,但工作。