如何设置授权Hudson / Jenkins来克隆你的mercurial存储库

时间:2011-04-02 19:06:38

标签: configuration mercurial hudson jenkins

在安装和使用mercurial之后,我试图让Hudson克隆存储库,以便它可以构建我的项目。

目前,以下任务有效。

  • 我可以同步到我的外部主机,代码会显示在该主机上。

现在我正在尝试配置hudson / jenkins来访问我主机上的代码。

但不幸的是我正在犯错:

Started by user anonymous
$ hg clone --rev default https://bitbucket.org/*/testproject "F:\Hudson\jobs\testproject\workspace"
abort: http authorization required
ERROR: Failed to clone https://bitbucket.org/*/testproject
[workspace] $ hg log --rev . --template {node}
java.io.IOException: Cannot run program "hg" (in directory "F:\Hudson\jobs\testproject\workspace"): CreateProcess error=267, The directory name is invalid
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
    at hudson.Proc$LocalProc.<init>(Proc.java:244)
    at hudson.Proc$LocalProc.<init>(Proc.java:216)
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:698)
    at hudson.Launcher$ProcStarter.start(Launcher.java:329)
    at hudson.Launcher$ProcStarter.join(Launcher.java:336)
    at hudson.plugins.mercurial.MercurialSCM.joinWithPossibleTimeout(MercurialSCM.java:298)
    at hudson.plugins.mercurial.HgExe.popen(HgExe.java:191)
    at hudson.plugins.mercurial.HgExe.tip(HgExe.java:171)
    at hudson.plugins.mercurial.MercurialSCM.calcRevisionsFromBuild(MercurialSCM.java:254)
    at hudson.scm.SCM._calcRevisionsFromBuild(SCM.java:304)
    at hudson.model.AbstractProject.calcPollingBaseline(AbstractProject.java:1186)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1175)
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:523)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:418)
    at hudson.model.Run.run(Run.java:1362)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:145)
Caused by: java.io.IOException: CreateProcess error=267, The directory name is invalid
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
    at java.lang.ProcessImpl.start(ProcessImpl.java:30)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
    ... 18 more
Finished: FAILURE

我需要采取哪些措施来告诉Hudson使用用户名x和密码y来访问数据?

已修改 =&gt;找到了如何集成ssh。

4 个答案:

答案 0 :(得分:18)

使用SSH代替https

从PuTTY网站下载putty.exe,puttygen.exe,pageant.exe和plink.exe。 启动puttygen并以 OPENSSH FORMAT 生成密钥(hudsons格式)(=&gt; How to use Svn + SSH

单击保存私钥按钮并将.PPK文件保存到某处。 单击保存公钥按钮并保存。

转到您的网站并输入公共ssh-key

运行pageant.exe。选美图标(戴帽子的电脑)将显示在状态托盘中。

右键单击选美图标,然后选择添加密钥。 选择您之前保存的.PPK文件,然后输入其密码。

以下(结束部分被复制)来自Ted Naleid(谢谢!)博客女巫可以在这里找到:Hooking up hudson to your ...

  

在Hudson中安装Mercurial插件

     

现在剩下要做的就是安装   哈德森的Mercurial插件。在一个   浏览器,转到   http://INSERT_YOUR_IP_HERE:8080。   哈德森应该出现。

     

点击“管理Hudson”然后转到   “管理插件”。去吧   “可用”选项卡,选中“Hudson   Mercurial插件“并击中了   “安装”按钮。哈德森会提示   你重新启动,然后它   安装。

     

之后,只需创建一份新工作即可   你会有一个新的“mercurial”选项   在“源控制管理”   部分。选择并放入ssh   “存储库URL”字段中的URL。   然后将“默认”放在“分支”中   现场并设置其余的工作   构建/测试你的代码(练习   留给读者)。

这是第一个成功的构建! First succefull build

结论:这是分散在互联网上的所有小博客的摘要。我希望这篇文章可以帮助你开始哈德森和善变。

答案 1 :(得分:6)

我认为问题与用户名和密码无关。您的堆栈跟踪告诉您路径F:\Hudson\jobs\testproject\workspace出错了。

  

无法运行程序hg(在目录中   “F:\哈德森\作业\ testproject \工作空间”)

     

目录名无效

无论如何,您可以在网址中指定用户名和密码,例如:http://user:password@mydomain.org

答案 2 :(得分:3)

要使用BitBucket验证Jenkins / Hudson Mercurial插件,我发现使用SSH协议而不是HTTPS非常有用,特别是:

  1. 似乎没有办法使用Mercurial Jenkins插件将您的HTTPS凭据存储到BitBucket,但使用SSH可以安全,安全地存储您的凭据

  2. 使用SSH,您可以将其配置为使用压缩,而Mercurial本身并不这样做。

  3. 有关设置对BitBucket的SSH访问的良好说明,请访问:http://confluence.atlassian.com/display/BITBUCKET/Using+SSH+to+Access+your+Bitbucket+Repository

    注意:

    • 如果您在* nix服务器上运行Jenkins / Hudson,您将需要以运行Jenkins进程的用户身份登录并从该用户主目录执行这些操作,因此该用户将找到配置(例如,在我的Debian服务器上安装Jenkins独立版,用户'jenkins'创建,主目录设置为'/ var / lib / jenkins'[ not / home / jenkins] - 我在哪里执行上述链接提供的说明。

    • 我发现在尝试让Jenkins调用它之前,确保从命令行确保hg clone命令是有用的。

    • 重要提示:为了实现这一点,我必须生成一个没有**密码的密钥**。

答案 3 :(得分:2)

您可以将以下行添加到jenkins .hgrc文件(通常是/var/lib/jenkins/.hgrc)

[auth]
bitbucket.prefix = https://bitbucket.org/your_user/...
bitbucket.username = your_user
bitbucket.password = ******

请参阅http://www.selenic.com/mercurial/hgrc.5.html#auth

相关问题