2011-04-02 113 views
21

安装和玩mercurial后,我试图让哈德森克隆存储库,以便它可以建立我的项目。如何设置授权哈德森/詹金斯克隆你的mercurial存储库

目前下面的任务工作。

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

现在我正在尝试配置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 

什么样的行动做我需要做的,告诉哈德森使用的用户名x和密码y以存取权限的数据?

编辑 =>发现如何整合ssh。

+1

你能否详细说明请有关“发现如何整合SSH”?我有类似的错误。 – 2013-09-05 18:14:11

回答

17

二手SSH而不是https

下载putty.exe,puttygen.exe,pageant.exe,并从腻子网站plink.exe。 开始的puttygen并产生OpenSSH格式(哈德森格式)的关键(=>How to use Svn + SSH

点击保存私钥按钮,保存.PPK文件的某处。 单击保存公钥按钮并保存。

转到您的网站,并进入公共SSH密钥

运行pageant.exe。状态栏中将出现选美图标(戴着帽子的电脑)。

右键单击该选美图标并选择添加键。 选择先前保存的.PPK文件并键入其密码。

下从泰德Naleid(部被复制)(谢谢!)博客女巫可以在这里找到:Hooking up hudson to your ...

Install the Mercurial plugin in Hudson

All that’s left to do now is install the Mercurial plugin in hudson. In a browser, go to http://INSERT_YOUR_IP_HERE:8080 . Hudson should come up.

Click on “Manage Hudson” and go to “Manage Plugins”. Go to the “Available” tab, check “Hudson Mercurial plugin” and hit the “Install” button. Hudson will prompt you to restart, and then it’s installed.

After that, just create a new job and you’ll have a new “mercurial” option in the “source control management” section. Select that and put the ssh URL in the “Repository URL” field. Then put “default” in the “branch” field and set up the rest of the job to build/test your code (an exercise left to the reader).

,在这里它是第一个succesfull订做! First succefull build

结论:这是所有围绕互联网散布的小博客的总结。我希望这篇文章可以帮助你启动哈德森和mercurial。

6

我认为这个问题与用户名和密码无关。你的堆栈跟踪告诉你路径F:\Hudson\jobs\testproject\workspace有问题。

Cannot run program hg (in directory "F:\Hudson\jobs\testproject\workspace")

The directory name is invalid

无论如何,您可以在URL中指定用户名和密码,例如:http://user:[email protected]

3

为了验证詹金斯/哈德森水银插件与到位桶我也认为有必要使用SSH协议,而不是HTTPS特别是因为:

  1. 似乎没有成为一个方式来存储您的HTTPS凭借Mercurial Jenkins插件提供给BitBucket的凭证,但通过SSH,您可以安全,安全地存储凭据

  2. 使用SSH,您可以将其配置为使用压缩,而Mercurial本身不会执行此操作。

为SSH访问设置多达到位桶良好的指令可以在这里:http://confluence.atlassian.com/display/BITBUCKET/Using+SSH+to+Access+your+Bitbucket+Repository

注:

  • 如果你是一个* nix的服务器上运行詹金斯/哈德森,你会想以运行Jenkins进程的用户身份登录并从该用户主目录执行这些操作,以便该用户可以找到这些配置(例如,在我的Debian服务器安装Jenkins standalone后,创建用户'jenkins'并创建主目录已设置到'/ var/lib/jenkins'[不是/home/jenkins] - 我在这里执行了上述链接提供的说明)。

  • 我发现确保hg clone命令在尝试让Jenkins调用它之前从命令行工作非常有帮助。

  • 重要提示:为了使这个工作,我必须生成一个密钥**没有**密码短语。

2

您可以添加以下行詹金斯.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

+0

这是我的解决方案。在我的Windows安装中,.hgrc文件隐藏在此文件夹中,如果其他人正在查找它:C:\ Program Files(x86)\ Jenkins \ workspace \ <您的项目文件夹> \。hg如果您的项目文件夹不存在然后尝试做一个初步构建让詹金斯为你设置它。 – 2012-06-27 15:04:35

+0

路径已经更改,同时jenkins/jobs/<您的项目文件夹> /workspace/.hg,但mercurial插件也有一个'Credentials'部分。 – jan 2014-03-17 08:31:05

0

您可以添加您的SCM凭据詹金斯的“Credentials`部分:

enter image description here

也改变了作业配置使用的凭据:

enter image description here

相关问题