繁体   English   中英

将 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 上看到。

我知道作为作业配置的一部分,我可以在平凡的 rebase 上排除构建触发器,因此插件机制获得了将平凡的 rebase 识别为事件的机制,我该如何明确它? 有没有办法做到这一点?

克隆具有 -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 
        }   
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM