我正在将SonarQube集成到Jenkins中。当前,我们使用浅层克隆,因为在历史记录中给定较大的二进制文件的情况下,我们的存储库很难完全克隆出克隆。 SonarQube需要运行git blame
,这显然不适用于浅克隆。我需要一种解决方法,但不能更改全局Jenkins配置(这会减慢所有构建的速度)。
情况:
checkout scm
不带参数。
sh 'git fetch --unshallow
由于没有凭据而出错。
我已经尝试过这种怪异来自定义scm的参数:
checkout scm: [
$class: 'GitSCM', userRemoteConfigs: [
[url: env.repoURL, credentialsId: 'GitHubEnterprise']
], extensions: [
[$class: 'CheckoutOption', timeout: 60],
[$class: 'CloneOption', noTags: true,
reference: '/var/lib/gitchcache/reference.git',
shallow: false, timeout: 60]
], branches: [
[name: branch]
]
], remoteName: "origin", poll: false, clearWorkspace: true
但是我得到这个错误:
> git rev-parse PR-42^{commit} # timeout=10
Couldn't find any revision to build. Verify the repository
and branch configuration for this job.
已报告的问题似乎集中在未能提供“存储库名称”:
我正在尝试构建请求请求,但没有更改的refspec。我不知道为什么不能这样推断,但事实并非如此。
以下是解决第一部分的方法:
checkout scm: [$class: 'GitSCM',
userRemoteConfigs: [
[url: env.GIT_URL,
refspec: "+refs/pull/${prNumber}/head:refs/remotes/origin/${branch}",
credentialsId: 'GitHubEnterprise']
],
extensions: [
[$class: 'CloneOption',
shallow: false,
timeout: 60]
],
branches: [
[name: branch]
]
]
结帐有效,构建有效,但我仍然得到了一个浅结帐...
INFO: SCM provider for this project is: git
INFO: 1 files to be analyzed
WARN: Shallow clone detected, no blame information will be provided. You can convert to non-shallow with 'git fetch --unshallow'.
INFO: 0/1 files analyzed
WARN: Missing blame information for the following files:
WARN: * src/main/java/com/example/Example.java
这是我在Project-Jenkins配置中的GitHub Organization下拥有的东西:
这是我想要的特定构建步骤:checkout scm
,但是在代码中使用浅的“未选中”。
如何在Jenkins中获取--unshallow?
答案 0 :(得分:2)
使用git-4.0.0-beta3版本的git jenkins插件是不可能的。 unshallow
的{{1}}参数的源代码中的There is no support or mention whatsoever。
您所能做的就是直接保留git jenkins插件选项:先浅提取,以便更快。
然后您有一些选择:
git fetch
而不是通过插件来运行不精简的过程。