如何在声明性管道上比较两个git分支?

时间:2018-05-22 01:50:17

标签: git jenkins jenkins-pipeline

我需要在管道中比较两个远程分支。

首先,我尝试了以下命令

sh(script: "git diff --name-only origin/branch1 origin/branch2", returnStdout: true)    

但詹金斯无法识别这两个分支。它只识别checkout scm提供的那个。

然后我尝试了一个提取

withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'ID',
        usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
                    sh("git fetch origin branch 1")

}    

但是我得到了以下错误:

致命:无法读取用户名' HTTP_BITBUCKET_LINK':没有此类设备或地址

我也试过了sshagent,但是我得到了同样的错误。

请您告诉我是否可以比较两个分支以及如何比较?

1 个答案:

答案 0 :(得分:1)

我能够解决这个问题。

我将Jenkins配置为通过行为部分的ssh使用结帐源。

我使用了以下代码:

sshagent(credentials: [CREDENTIAL_GIT_SSH]) {

    sh "git fetch --no-tags origin '+refs/heads/BRANCHE1:refs/remotes/origin/BRANCHE1'"

            def gitDiff = sh(script: "git diff --name-only origin/BRANCHE1...origin/BRANCHE2", returnStdout: true).trim()

}