我的代码在 Mercurial 存储库中(使用自签名证书进行保护),我正在尝试设置 Jenkins 以使用它。
我已经在 Jenkins 中安装了 Mercurial 插件(指向 Jenkins 服务器/从属设备上的 TortoiseHg 安装)并且 Jenkins 作业已正确配置为从存储库中获取源代码。
当我手动构建(即,通过 Web 界面)时,一切都按预期工作。
但是,似乎对存储库的轮询没有成功,因为我得到了类似于以下内容的输出:
Started on Apr 27, 2012 1:07:41 PM
[<jobname>] $ hg pull --rev default
warning: <MercurialServerIP> certificate with fingerprint e3:5f:5e:ea:4f:da:ef:a4:0b:4a:bb:00:e8:31:59:de:ce:d0:28:94 not verified (check hostfingerprints or web.cacerts config setting)
abort: mercurial_keyring: http authorization required but program used in non-interactive mode
[<jobname>] $ hg log --style <workspace>\<jobname>\tmp688470509422797505style --branch default --no-merges --prune 65d180b20a1e625841c8385709c86b83c3e10421
Done. Took 1.9 sec
No changes
我之前已经完成了一个存储库的手动克隆,以便我能够输入用户的密码来使用 Mercurial key 环扩展进行授权,但是根据错误输出,它似乎没有被应用。
如何配置 Jenkins 或运行构建的机器以成功进行轮询?
最佳答案
这可能不是解决问题的最佳方法,但它对我有用,我可以继续前进。
我能够弄清楚如何让服务器记住我的设置中的密码的唯一方法是在\mercurial.ini 中手动指定它。
注意:您可能还需要从 mercurial.ini 中删除 mercurial_keyring 行。 (这会禁用 key 环扩展,因为我们手动指定了所有内容。)
我以前认为在服务器上克隆一次存储库会让它记住密码,但这似乎不适用于 Jenkins 中的轮询功能(尽管当它们在服务器上执行时它确实适用于我的实际构建脚本) )。
我对在服务器上使用纯文本密码并不特别满意,但直到我找到更好的方法让轮询工作,我才能忍受这一点。
关于mercurial - 作为 Jenkins 的一部分,您如何为 Mercurial 指定身份验证信息? (mercurial_keyring),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10354894/