下午好,
我在 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
如果我将参数
--username user --pasword pass
添加到 svn commit 命令,它可以正常工作,但我不明白为什么没有它们就不能工作,在颠覆配置中配置了用户凭据,我不想要留下写在作业脚本中的用户密码。
我尝试使用具有颠覆凭证的环境变量:
但是当我执行
echo ${SVN_CREDENTIAL}
它返回一个具有以下格式的字符串:26c*****-****-****-****-*********671
我需要这样的东西:--username user --password pass
有谁知道为什么提交不起作用或者我如何在不输入纯文本的情况下使用密码?提前致谢...
最后,我通过使用 Jenkins 插件“Mask Passwords”解决了这个问题。此插件允许屏蔽可能出现在控制台中的密码,包括定义为构建参数的密码。这是插件的链接:https://plugins.jenkins.io/mask-passwords/
安装并启用此插件后,它允许我在 Jenkins 作业中选中以下复选框:
所以我能够使用设置为密码参数的变量运行以下命令:
svn commit -m "Jenkins Job - $date" --username user --password ${SVN_PASS}
命令的控制台输出如下:
我希望这对其他人有用,谢谢您的帮助!