Jenkins配置SVN更新策略后仍删除Workspace问题求助
Jenkins SVN构建时Workspace被删除而非更新?来排查这几个点!
结合你的环境(CentOS7、SVN 1.7、Jenkins 2.107)和配置情况,我碰到过好几个类似的场景,给你梳理几个最可能的原因和对应的排查/解决步骤:
1. 先检查「构建前清理」选项!
这绝对是最常见的“坑”——如果你的项目勾选了**「Delete workspace before build starts」**(一般在「Build Environment」或者构建步骤区域),不管你SVN更新策略怎么配,Jenkins都会先把整个Workspace删干净再重新检出。
- 怎么查:进项目配置页,翻到「Build Environment」板块,看看有没有这个勾选框;
- 解决:如果不需要每次构建都清Workspace,直接取消勾选就行。
2. SVN工作副本损坏或版本不兼容
SVN 1.7的工作副本格式和后续版本差异不小,要是Jenkins检测到工作副本损坏、或者本地SVN客户端版本和服务器不匹配,就会自动删掉重新检出:
- 排查:手动跑到Jenkins的Workspace目录(默认是
/var/lib/jenkins/workspace/[你的项目名]),切换到jenkins用户执行svn status,看看有没有报错(比如提示工作副本太旧、或者文件损坏); - 解决:
- 先手动删掉当前的坏副本,让Jenkins重新检出一次,之后再试更新;
- 确认Jenkins用的SVN客户端是1.7版本:在Jenkins的「Global Tool Configuration」里指定SVN的安装路径(比如
/usr/bin/svn,先确认这个路径的版本是1.7)。
3. SVN更新策略的配置细节没选对
你说配置了「尽可能使用svn update」,得确认是在正确的地方选对了选项:
- 进项目配置的「Source Code Management」→「Subversion」,点「Advanced」按钮,检查「Update Strategy」是不是选了**「Update as much as possible, revert files if needed」**(别选成「Always checkout fresh copy」);
- 另外有些版本的插件里,「Check-out Strategy」也要对应设置成「Use svn update as much as possible」,两个选项是关联的。
4. Jenkins运行用户的权限问题
CentOS7下Jenkins默认用jenkins用户运行,如果这个用户没有Workspace目录的读写权限,SVN更新会失败,Jenkins就会 fallback 到删了重新检出:
- 排查:看Jenkins的构建日志,找有没有「Permission denied」这类报错;或者手动
su jenkins,到Workspace目录执行svn update,看能不能正常跑; - 解决:给Workspace目录设置正确权限,比如执行
chown -R jenkins:jenkins /var/lib/jenkins/workspace,确保jenkins用户能读写。
5. 老版本Jenkins/SVN插件的Bug
Jenkins 2.107是2018年的老版本了,对应的SVN插件可能存在已知的更新策略失效Bug:
- 排查:查一下SVN插件的历史更新记录,看看后续版本有没有修复这类问题;
- 解决:如果条件允许,升级Jenkins到较新的稳定版本,同时把SVN插件更到兼容的版本(注意备份好配置再升级)。
内容的提问来源于stack exchange,提问作者user9407425
相关产品推荐
相关产品推荐

