将 gerrit trivial rebase 识别为 jenkins 上的事件
Recognize gerrit trivial rebase as event on jenkins
我需要找到一种方法来仅在路径平凡变基时执行我的部分 jenkins 管道。
if GERRIT_EVENT_TYPE=rebase{
stage ('A'){}
}
stage ('B'){}
gerrit 上的每个 rebase 都会创建新补丁,我在作业参数上看到 GERRIT_EVENT_TYPE=new_patch。
我知道作为作业配置的一部分,我可以在普通变基上排除构建触发器,因此插件机制获得了将普通变基识别为事件的机制,我该如何明确它?
有办法吗?
克隆深度为 -2 的 repo 并比较执行此工作的父 ID
if(env.GERRIT_PATCHSET_NUMBER.toInteger() > 1){ // the commit has previous revisions - let's compare their parents
currParentSHA = checkoutRepoAndReturnParentSHA(env.GERRIT_PROJECT, env.GERRIT_REFSPEC)
// calculate previous change refspec - reduce GERRIT_PATCHSET_NUMBER by 1
tokenized_list = env.GERRIT_REFSPEC.tokenize('/')
tokenized_list[-1] = (env.GERRIT_PATCHSET_NUMBER.toInteger() - 1).toString()
previous_patch_refspec = tokenized_list.join('/')
prevParentSHA = checkoutRepoAndReturnParentSHA(env.GERRIT_PROJECT, previous_patch_refspec)
isRebased = (currParentSHA != prevParentSHA) ? true : false
}
def checkoutRepoAndReturnParentSHA(gerrit_project, gerrit_refspec){ // clone current change into dedicated directory and return parent commit SHA
dir(gerrit_refspec){
dir(gerrit_project){
return sh(returnStdout: true, script: 'git rev-parse HEAD^1').trim() // get parent commit SHA
}
}
}
我需要找到一种方法来仅在路径平凡变基时执行我的部分 jenkins 管道。
if GERRIT_EVENT_TYPE=rebase{
stage ('A'){}
}
stage ('B'){}
gerrit 上的每个 rebase 都会创建新补丁,我在作业参数上看到 GERRIT_EVENT_TYPE=new_patch。
我知道作为作业配置的一部分,我可以在普通变基上排除构建触发器,因此插件机制获得了将普通变基识别为事件的机制,我该如何明确它? 有办法吗?
克隆深度为 -2 的 repo 并比较执行此工作的父 ID
if(env.GERRIT_PATCHSET_NUMBER.toInteger() > 1){ // the commit has previous revisions - let's compare their parents
currParentSHA = checkoutRepoAndReturnParentSHA(env.GERRIT_PROJECT, env.GERRIT_REFSPEC)
// calculate previous change refspec - reduce GERRIT_PATCHSET_NUMBER by 1
tokenized_list = env.GERRIT_REFSPEC.tokenize('/')
tokenized_list[-1] = (env.GERRIT_PATCHSET_NUMBER.toInteger() - 1).toString()
previous_patch_refspec = tokenized_list.join('/')
prevParentSHA = checkoutRepoAndReturnParentSHA(env.GERRIT_PROJECT, previous_patch_refspec)
isRebased = (currParentSHA != prevParentSHA) ? true : false
}
def checkoutRepoAndReturnParentSHA(gerrit_project, gerrit_refspec){ // clone current change into dedicated directory and return parent commit SHA
dir(gerrit_refspec){
dir(gerrit_project){
return sh(returnStdout: true, script: 'git rev-parse HEAD^1').trim() // get parent commit SHA
}
}
}