如果分叉代码不是最新的,则构建失败

时间:2018-06-14 06:12:00

标签: git jenkins github jenkins-pipeline

如果分叉代码与原始仓库不是最新的,我需要使构建失败。

当PR完成时,Jenkins需要首先检查代码是否来自fork(要构建的)在构建之前是否是最新的。这可以从詹金斯那边检查吗?

我注意到我可以在受保护的分支上添加状态检查,如enter image description here

如上图所示。 GitHub告诉我们分支需要更新,但我的构建是在检查期间完成的,因此它浪费了构建,因为毕竟开发人员必须更新代码并重新构建。有没有办法在Github方面避免这个问题或在Jenkins中添加其他代码?

我使用GitHub Organization,在MultiBranch Pipeline中面临同样的问题。  使用简单的checkout scm在PR期间获取分叉代码并使用maven构建。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在Jenkins方面,您可以添加一个步骤:

  • 获取原始repo URL(不是fork)
  • 比较original/master HEAD和git merge-base master yourBranch:如果它们不同,则表示自创建主题分支以来,原始/母版已经发展。

在" Discussion on fork-point mode"

中查看更多内容

那是:

 sh 'git remote add original /url/of/the/original/repo' 
 sh 'git fetch original' 
 sh 'if [[ "$(git rev-parse original/master)" != "$(git merge-base master yourBranch)]]; then 
   // fail the job;
   fi
 }'