詹金斯 'Delete workspace before build starts' 和 'Wipe out repository & force clone' 之间的区别?

Difference between 'Delete workspace before build starts' and 'Wipe out repository & force clone' in Jenkins?

我正在测试 jenkins job-dsl 插件。我有一个已启用设置 'Delete workspace before build starts' 的现有项目。

我定义了以下 DSL:

job("$basePath/my-project") {
    scm {
        git {
            remote {
                name('origin')
                url('git@bitbucket.org:my-organisation/my-project.git')
            }
            branch('*/develop')
            extensions {
                wipeOutWorkspace()
                submoduleOptions {
                    recursive()
                }
            }
        }
    }
}

这似乎给出了一个不完全相同的配置,它显示了一个 "Wipe out repository & force clone" 选项。这些选项到底是一回事还是有不同的行为?

两种选择大体上没有区别。

它们由不同的插件提供:

  • 清除存储库并强制克隆Git Plugin 的一部分,仅适合作为 git 插件的扩展
  • 构建开始前删除工作区Workspace Clean Plugin
  • 的一部分

Workspace Clean 插件与 Git 插件的主要区别:

  • 未绑定到 Git 仅限 SCM
  • 允许使用 ant 文件模式只删除部分文件或目录

Git 插件的 "Wipe out repository & force clone" 选项的一个重要行为是,如果您在 "Check out to a subdirectory" 选项中选择了一个,它将仅删除存储库子目录。它会让你的工作空间的其余部分保持独立。据我所知,这没有出现在文档中。

您可以通过在 "Pattern for files to be deleted" 高级配置部分中指定克隆子目录来使用 Workspace Cleanup 插件实现类似的行为。

最终结果完全相同,但根据我的观察,Git 插件删除比 Workspace Cleanup 插件快 5 秒。