我希望能这样说:詹金斯管道:结帐明确git的承诺
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
我已经看到了变化之前问,虽然没有真正的答案 - 只是建议喜欢隐藏源代码等,而不是真正的我以后。
该文档表明应该可以给出明确的提交散列,可能使用分支代替,但我不能找出语法并找不到任何示例。当我这样做时,我认为主分支 - 在我们的设置中,主分区不起作用。
到目前为止,我已经找到了唯一的解决办法已经签出分支,然后显式调用混帐得到承诺:
git branch: branch, credentialsId: credentialsId, url: url
sh 'git checkout ' + commitHash
(其中分公司是我最初得到的哈希在分支这项工作的顶端。它的工作原理,但不是最巧妙的。
任何人有更好的办法?
见在2017年7月12日和2017年7月13日评论[JENKINS-31826(https://issues.jenkins-ci.org/browse/JENKINS-31826) –