在安装和使用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。
答案 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。 然后将“默认”放在“分支”中 现场并设置其余的工作 构建/测试你的代码(练习 留给读者)。
这是第一个成功的构建!
结论:这是分散在互联网上的所有小博客的摘要。我希望这篇文章可以帮助你开始哈德森和善变。
答案 1 :(得分:6)
我认为问题与用户名和密码无关。您的堆栈跟踪告诉您路径F:\Hudson\jobs\testproject\workspace
出错了。
无法运行程序hg(在目录中 “F:\哈德森\作业\ testproject \工作空间”)
目录名无效
无论如何,您可以在网址中指定用户名和密码,例如:http://user:password@mydomain.org
。
答案 2 :(得分:3)
要使用BitBucket验证Jenkins / Hudson Mercurial插件,我发现使用SSH协议而不是HTTPS非常有用,特别是:
似乎没有办法使用Mercurial Jenkins插件将您的HTTPS凭据存储到BitBucket,但使用SSH可以安全,安全地存储您的凭据
使用SSH,您可以将其配置为使用压缩,而Mercurial本身并不这样做。
有关设置对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 = ******