Jenkins从节点执行git svn clone命令的身份认证问题求助
git svn clone的身份认证问题 我之前处理过类似的Jenkins+Git SVN认证问题,结合你的情况,给你几个可行的解决方案:
确认Jenkins从节点执行用户的Subversion配置路径
你修改的~/.subversion/servers大概率是当前登录用户的配置目录,但Jenkins从节点用SYSTEM用户执行命令时,它的家目录和普通用户完全不同:- Windows系统下,SYSTEM用户的家目录通常是
C:\Windows\System32\config\systemprofile,你需要把Subversion的认证配置放到C:\Windows\System32\config\systemprofile\.subversion目录下; - Linux系统下,SYSTEM用户(一般是root或jenkins系统用户)的家目录可能是
/root或/var/lib/jenkins,对应.subversion目录要放在这里。
配置完成后记得重启Jenkins从节点,让配置生效。
- Windows系统下,SYSTEM用户的家目录通常是
在
git svn clone命令中显式指定配置目录
如果你不想改动SYSTEM用户的目录,可以用--config-dir参数直接指定你已经配置好认证信息的Subversion目录,命令格式如下:git svn clone --config-dir /path/to/your/custom/.subversion https://Path/To/Svn Path/To/Dir这样Git SVN会直接读取你指定目录下的servers和authz配置,跳过默认的SYSTEM用户目录。
修改Jenkins从节点的执行用户
如果权限允许,你可以把Jenkins从节点的服务运行用户改成拥有SVN权限的普通用户:- Windows:打开服务管理器,找到Jenkins从节点服务,右键选择「属性」→「登录」,切换为指定的有权限账号并输入密码;
- Linux:修改Jenkins从节点启动脚本,用
su - your_username -c "启动命令"的方式切换到目标用户执行,或者修改系统服务的运行用户配置。
这样执行git svn clone时就会用这个有权限的用户身份,你之前自己配置的~/.subversion也能正常被读取。
排查HTTPS证书导致的500错误
报错里的500 Internal Server Error有时候和SSL证书有关,如果你的SVN服务器用的是自签名证书,需要在Subversion配置里信任它:
在servers文件的对应仓库段添加:ssl-trust-default-ca = yes或者手动把证书导入到SYSTEM用户的证书存储(Windows)或系统证书库(Linux)中。
手动测试验证问题根源
先登录到Jenkins从节点,用SYSTEM用户身份手动执行git svn clone命令(Windows可以用psexec -s cmd.exe打开SYSTEM权限的命令行),看是否能成功。如果手动执行没问题,那问题出在Jenkins任务配置上;如果手动也失败,就聚焦在Subversion的认证和证书配置上排查。
内容的提问来源于stack exchange,提问作者Emile

