5

我的代码在 Mercurial 存储库中(使用自签名证书保护),我正在尝试设置 Jenkins 来使用它。

我已经在 J​​enkins 中安装了 Mercurial 插件(指向在 Jenkins Server/Slaves 上安装 TortoiseHg),并且 Jenkins 作业已正确配置为从存储库中获取源代码。

当我手动构建(即通过网络界面)时,一切都按预期工作。

但是,似乎对存储库的轮询没有成功,因为我得到了类似于以下内容的输出:

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 密钥环扩展来进行授权,但是根据错误输出,它似乎并没有被应用。

如何配置 Jenkins 或运行构建的机器以成功进行轮询?

4

2 回答 2

3

这可能不是解决问题的最佳方法,但它对我有用,我可以继续前进。

我能够弄清楚如何让服务器记住我的设置中的密码的唯一方法是在 \mercurial.ini 中手动指定它。

注意:您可能还需要从 mercurial.ini 中删除 mercurial_keyring 行。(这会禁用密钥环扩展,因为我们手动指定所有内容。)

我以前认为在服务器上克隆一次存储库会让它记住密码,但这似乎不适用于 Jenkins 中的轮询功能(尽管当它们在服务器上执行时它确实适用于我的实际构建脚本)。

我对在服务器上使用纯文本密码并不特别满意,但在我找到更好的方法让轮询工作之前,我可以忍受这一点。

于 2012-04-27T17:10:46.013 回答
0

使用“kilnauth 扩展”,您可以将凭据存储在您的机器上。这样你就不必在 Jenkins 上配置任何特殊的东西。

$ hg help kilnauth
kilnauth extension - stores authentication cookies for HTTP
repositories. This extension knows how to capture Kiln
authentication tokens when pushing over HTTP.
This means you only need to enter your login and password once;
after that, the FogBugz token will be stored in your home
directory, allowing pushing without a password.

有关如何安装它的说明,请遵循: http: //kiln.stackexchange.com/questions/341/how-can-i-install-kilns-mercurial-extensions-manually

于 2012-11-08T12:28:47.453 回答