即使在 Jenkins 构建中禁用浅层,SonarQube 也会发出浅层克隆警告

SonarQube with shallow clone warning even with shallow disabled on Jenkins build

我有一个 Jenkins 服务器使用 MSBuild 构建解决方案。浅克隆未启用(在高级克隆行为上),所以我认为它正在获取所有最后的提交。我正在使用 SonarQube 进行分析。我将构建前的开始分析和构建完成后的结束分析设置为 运行。 SonarQube 分析成功完成,但我收到警告:

Shallow clone detected during the analysis. Some files will miss SCM information. This will affect features like auto-assignment of issues. Please configure your build to disable shallow clone.

有人知道我缺少什么 SonarQube 工作正常吗?

我修好了!当我在 Jenkins 上禁用浅克隆时,它仍然缺少过去的提交,所以我不得不 运行 在存储库文件夹内的 GIT bash 上执行一些命令:

git fetch --depth=1000000

(除非你有超过 100 万次提交)

然后确认我已经删除了浅层:

git fetch --unshallow

等待下一次构建和分析后,现在警告消失了,我可以看到作者了!

如文档中所述:https://docs.travis-ci.com/user/customizing-the-build#sts=Git%20Clone%20Depth%20#

只需在.travis.yml中禁用git获取深度限制,如下所示:

git:
  depth: false

否则你git克隆了两次。

我在与 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