詹金斯 '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 秒。
我正在测试 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 秒。