当Jenkins构建一个非master的git分支时,我希望在一个特定点自动合并到master中。我不想使用git插件的自动合并功能。
但是,我添加了stage:
stage('Merge master') {
sh 'git merge master'
}但我得到一个错误:
merge: master - not something we can mergeJenkins似乎正在以一种奇怪的方式检查我的分支,这阻止了我能够合并master。要将master合并到我的分支中,我需要做什么?
发布于 2017-12-05 00:32:39
当Jenkins克隆您的存储库时,它并没有签出本地的master分支
下面的脚本应该允许您测试master的合并。
git fetch --all
git checkout master
git checkout branch-name
git merge master发布于 2017-12-05 00:28:06
Jenkins可能只是将其头部设置为远程分支引用,而不是创建本地分支。
在我开始讨论如何解决这个问题之前,您是否考虑过如果合并遇到冲突会发生什么?因为可能会发生的情况是,它会将构建服务器置于一种意外状态,您必须手动清理该状态。这就是为什么除了本地(和交互)进行合并不是很典型的原因。
更新:为了完整起见,我从原始答案中保留了以下内容,但不起作用:
如果你想尝试一下,你可能需要说这样的话
git合并原始/母版
所以看起来Jenkins可能在做三件事中的一件:
它可能正在使用origin以外的远程名称。如果这就是全部,那么Edmund Dipple的回答应该会有所帮助。
它可能正在使用诸如--single-branch之类的选项进行克隆,或者以其他方式配置遥控器的refspec以使master不被获取。在这种情况下,您必须自己重新配置repo,或者包含一个显式refspec来获取。
它可能根本不是克隆。就如何处理它而言,这与第二种情况非常相似;我想我要补充的主要内容是,可以想象甚至没有配置遥控器。
因此,在我看来,下一步是让构建脚本显示本地存储库的配置(git config -l),查找remote和fetch设置,并从中找出下一步。
发布于 2017-12-05 09:33:41
我相信你只需要Git插件就可以做到这一点。在Additional Behaviors下,有一个在构建之前进行合并的选项。此外,您还可以在Pipeline脚本中利用这一点
https://stackoverflow.com/questions/47637728
复制相似问题