即使在 Jenkins 构建上禁用了浅层,SonarQube 也会发出浅层克隆警告
Posted
技术标签:
【中文标题】即使在 Jenkins 构建上禁用了浅层,SonarQube 也会发出浅层克隆警告【英文标题】:SonarQube with shallow clone warning even with shallow disabled on Jenkins build 【发布时间】:2020-03-18 20:55:13 【问题描述】:我有一个使用 MSBuild 构建解决方案的 Jenkins 服务器。未启用浅克隆(在高级克隆行为上),所以我认为它正在获取所有最后的提交。我正在使用 SonarQube 进行分析。我设置在构建之前运行开始分析,在构建完成后运行结束分析。 SonarQube 分析成功完成,但我收到警告:
分析期间检测到浅克隆。有些文件会错过 SCM 信息。 这将影响问题的自动分配等功能。请 配置您的构建以禁用浅克隆。
有人知道我对 SonarQube 缺少什么可以正常工作吗?
【问题讨论】:
documentation 页面上没有可用信息? 是的!我以前读过,但现在我检查了有关完整克隆的信息,所以我搜索了一下,现在发布了答案:) 【参考方案1】:我的一个与 sonarcloud 集成的 github 存储库在 sonarcloud 中收到了相同的警告。
因此,如果有人在 github 操作工作流中寻找禁用浅层克隆的选项,那么只需编辑 yml
文件并使用 fetch-depth: 0
选项和 actions/checkout@v2
步骤来禁用浅层克隆。
下面会提到完整的例子
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
欲了解更多详细信息,请访问 - https://github.com/actions/checkout#fetch-all-history-for-all-tags-and-branches
【讨论】:
【参考方案2】:如文档中所述:https://docs.travis-ci.com/user/customizing-the-build#sts=Git%20Clone%20Depth%20#
只需在.travis.yml
中禁用 git fetch depth 限制,如下所示:
git:
depth: false
否则你会被 git 克隆两次。
【讨论】:
【参考方案3】:我已经解决了!当我在 Jenkins 上禁用 Shallow Clone 时,它仍然缺少过去的提交,所以我不得不在存储库文件夹中的 GIT bash 上运行一些命令:
git fetch --depth=1000000
(除非您有超过 100 万次提交)
然后确认我已经移除了浅层:
git fetch --unshallow
等待下一次构建和分析后,现在警告消失了,我可以看到作者了!
【讨论】:
这意味着您在使用此命令后不再使用浅层克隆。对吗?以上是关于即使在 Jenkins 构建上禁用了浅层,SonarQube 也会发出浅层克隆警告的主要内容,如果未能解决你的问题,请参考以下文章
为啥即使没有 SVN 更改,Jenkins 也会触发 IVY 构建?
Jenkins-如果测试失败,即使构建通过,也要查看任何失败图标