首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >承认gerrit琐碎的重基为jenkins上的事件

承认gerrit琐碎的重基为jenkins上的事件
EN

Stack Overflow用户
提问于 2020-10-04 07:44:33
回答 1查看 151关注 0票数 0

我需要找到一种方法来执行我的jenkins管道的一部分,只有当路径琐碎的重基。

代码语言:javascript
复制
if GERRIT_EVENT_TYPE=rebase{
stage ('A'){}
}
stage ('B'){}

每次在gerrit上重新创建新的补丁程序,我在作业参数GERRIT_EVENT_TYPE=new_patch上看到。

我知道,作为作业配置的一部分,我可以将构建触发器排除在琐碎的重基上,因此插件机制获得了将琐碎的重基识别为事件的机制,我如何将其显化?有办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-13 09:05:36

克隆具有-2深度的repo并比较执行该工作的父ID

代码语言:javascript
复制
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 
        }   
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64192236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档