下午好,
我正在Jenkins中运行一个作业,需要执行一个svn commit
命令将结果上传到Subversion存储库。
首先,我已经配置了源代码源,以使用Subversion中托管的存储库,使用有效的用户凭据,并尽可能使用svn update
。
然后,我运行作业并修改了一些文件。
最后,执行svn add Packages/ --force
和svn commit -m "Testing Jenkins Job"
。
直到svn add
命令,作业才能正确运行,但当执行svn commit
时,我收到以下错误:
svn: E170013: Falló el commit (detalles a continuación):
svn: E170013: Unable to connect to a repository at URL 'https://svn...'
svn: E215004: No more credentials or we tried too many times.
Authentication failed
如果我在svn commit命令中添加参数--username user --pasword pass
,它就可以正常工作,但是我不明白为什么没有这些参数就不能正常工作,因为我已经在subversion配置中配置了用户凭证,而且我不想把用户密码写在作业脚本中.
我尝试使用环境变量和subversion凭据:
但是当我执行echo ${SVN_CREDENTIAL}
时,它返回一个字符串,格式如下:26c*****-****-****-****-*********671
,我需要这样的代码:--username user --password pass
有人知道为什么提交不起作用,或者我如何使用密码而不用输入纯文本吗?提前感谢...
1条答案
按热度按时间8fsztsew1#
最后,我使用Jenkins插件“Mask Passwords"解决了这个问题。这个插件允许屏蔽可能出现在控制台中的密码,包括定义为构建参数的密码。下面是这个插件的链接:https://plugins.jenkins.io/mask-passwords/
安装并启用此插件后,它允许我在Jenkins作业中选中以下复选框:
因此,我可以使用变量集作为密码参数来运行以下命令:
svn commit -m "Jenkins Job - $date" --username user --password ${SVN_PASS}
命令的控制台输出如下所示: