即使在 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 也会发出浅层克隆警告的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jenkins master 中禁用构建

为啥即使没有 SVN 更改,Jenkins 也会触发 IVY 构建?

Jenkins-如果测试失败,即使构建通过,也要查看任何失败图标

Ear 不是在 Jenkins 上使用 maven-ear-plugin 构建的

Sonar Runner 执行错误

SSIS 2016与Jenkins一起构建