小编典典

Jenkins管道:检出显式git commit

jenkins

我希望能够说些类似的话:

git branch: commitHash, credentialsId: credentialsId, url: url

用例:我正在并行构建和测试在不同平台上的运行,并希望确保每个都获得相同的代码。它是C ++,我们建立在独立的平台上,也建立在它们之上。

如果执行上述操作,它将失败-基础代码假定给定的分支实际上是一个分支,或者得到类似以下内容的代码:

[Linux64 Build]  > git rev-parse origin/e4b6c976a0a986c348a211579f1e8fd32cf29567^{commit} # timeout=10
[Pipeline] [Linux64 Build] }
[Pipeline] [Linux64 Build] // dir
[Pipeline] [Linux64 Build] }
[Pipeline] [Linux64 Build] // node
[Pipeline] [Linux64 Build] }
[Linux64 Build] Failed in branch Linux64 Build

尽管没有实际答案,但我看到过有人问过这个问题,尽管有一些建议-只是喜欢隐瞒源代码,等等。这并不是我真正想要的。

该文档建议应该有可能给出明确的提交哈希,可能使用分支代替,但是我无法确定语法,也找不到任何示例。当我这样做时,我想得到了master分支-
在我们的设置中,master不起作用。

到目前为止,我发现的唯一解决方案是检出分支,然后显式调用git以获取提交:

                git branch: branch, credentialsId: credentialsId, url: url
                sh 'git checkout ' + commitHash

(其中branch是我最初在工作顶部获得哈希的分支。它可以工作,但不是最整洁的。

有人有更好的方法吗?


阅读 381

收藏
2020-07-25

共1个答案

小编典典

使用一般的scm步骤

checkout([$class: 'GitSCM', branches: [[name: commitHash ]],
     userRemoteConfigs: [[url: 'http://git-server/user/repository.git']]])
2020-07-25