我使用一个自定义触发器来扫描存储库中的更改,并在需要时启动构建。它是一个Jenkinsfile,附带一些helper gradle脚本。
检查更改的核心功能是git diff
。它获取GIT_PREVIOUS_COMMIT
和GIT_COMMIT
并比较它们。这是完美的工作,直到有一个强制推送或修改提交。
Jenkins在不知道提交历史的情况下检查最新的提交。当然,git diff也会失败,因为它找不到被修改的提交的引用。
在本地,当前提交和修改提交之间的git diff
可以工作,因为我有所有的历史记录。但我想知道是否有一种方法可以在管道中做到这一点。
我的问题是:
- bitbucket是否存储提交历史,以及是否可以在Jenkins中以某种方式获取它?
- Jenkins存储是否从某个构建提交?是否可以从以前的Jenkins构建中获得提交?
编辑1和2:错字和造型。
编辑3:我也发现了currentBuild.changeSets,但它对我的用例不起作用。如果有一个力推动,它返回一个空集。有一个开放的bug:https://issues.jenkins.io/browse/JENKINS-68010
1条答案
按热度按时间wd2eg0qa1#
如果其他人也有同样的问题:
我已经成功地从Jenkins中的Bitbucket中获取了旧的(修改的)提交。所以,是的,Bitbucket存储提交历史。如果你有Git凭据,可以在Jenkins脚本中完成:
git fetch origin <full_commit_hash>
注意,它必须是完整的提交哈希,而不是它的短版本。