我在Win 2008服务器计算机上设置Jenkins,但在配置Jenkins连接到GitHub时遇到了一些麻烦。我收到以下错误:
Command "git.exe fetch -t git@github.com:USER/REPO.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: Permission denied (publickey).
fatal: The remote end hung up unexpectedly
ERROR: Could not fetch from any repository
FATAL: Could not fetch from any repository
hudson.plugins.git.GitException: Could not fetch from any repository
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:950)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:908)
at hudson.FilePath.act(FilePath.java:758)
at hudson.FilePath.act(FilePath.java:740)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:908)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1184)
at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:537)
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:425)
at hudson.model.Run.run(Run.java:1376)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:175)
我检查的内容
Jenkins配置设置
msysgit正常但CMD提示不会 当我导航到有效的仓库并从DOS提示符执行命令时,它也会失败。
你知道我可能缺少什么吗?
感谢您的帮助。
答案 0 :(得分:13)
正如我评论的那样,在使用ssh协议时,指定HOME
环境变量是关键
由于Windows没有HOME
,因此您需要明确地将其定义到您想要的任何目录。
然而,Vestnik评论:
我已指定覆盖Windows从属节点上的
HOME
以将其指向C:\jenkins
。
我已将id_rsa
置于C:\jenkins\.ssh
下方,但仍有此问题 我的奴隶代理在SYSTEM帐户下作为服务运行。
两个建议:
set
”,以便在与SYSTEM帐户一起使用时检查是否定义了HOME。
id_rsa
目录中同时拥有id_rsa.pub
和%HOME%\.ssh
:您需要公钥和私钥ssh。 (如“git clone with ssh issue”中所述)如果你有一个参数化版本,你也can define HOME
that way并检查你的奴隶是否为HOME
选择了正确的值:
答案 1 :(得分:5)
jnskins中有两个与ssh相关的插件可供使用:Publish Over SSH和Jenkins SSH plugin。
第一个插件提供了设置全局ssh密钥的可用性,第二个插件提供了设置各种ssh密钥的可用性。
接下来,您需要安装另外两个将在项目配置GitHub Plugin和Jenkins Git Plugin中使用的插件。
GitHub插件将用于设置 GitHub项目。 Jenkins Git插件将用于设置“存储库的URL”和其他东西,如分支等。
所有插件都可以从Jenkins插件管理器中的选项卡中获得。
从my blog post, on the topic复制:
詹金斯配置:
Jenkins SSH插件提供了为每个主机设置私钥的可用性,第二个插件为全局主机完成了工作 如果使用Jenkins SSH插件,则在SSH远程主机中写入主机,用户,密码和私钥路径。
如果使用Publish Over SSH,则在SSH设置中编写密码并粘贴私钥或写入路径。
项目配置如下:
GitHub项目https://github.com/GitUser/iOS-project/
*源代码管理
- > Git的
- > - >库
- > - > - >存储库的URL:git@github.com:GitUser / iOS-project.git
- 由您配置分支或采用默认分支 -
*构建触发器
- >民意调查SCM - Seted -
- >时间表:* * * * *
*构建
- >执行壳牌
-> -> Command: xcodebuild -target iOS-project -configuration AdHoc -sdk iphoneos5.0 clean
-> -> Command: agvtool new-version -all $BUILD_NUMBER
-> -> Command: xcodebuild -target iOS-project -configuration AdHoc -sdk iphoneos5.0
-> -> Command: xcrun -sdk iphoneos5.0 PackageApplication -v $WORKSPACE/build/AdHoc-iphoneos/iOS-project.app -o $WORKSPACE/build/AdHoc-iphoneos/iOS-project-$BUILD_NUMBER.ipa PROVISIONING_PROFILE="<provisioning profile>"
-> -> Command: curl http://testflightapp.com/api/builds.json -F file=@$WORKSPACE/build/AdHoc-iphoneos/iCushion-1.0-$BUILD_NUMBER.ipa -F api_token=<api_token> -F team_token=<team_token> -F notes="This is an autodeploy build from Jenkins!" -F notify=True -F distribution_lists="<distributedlist 1>, <distributedlist 2>"
答案 2 :(得分:0)
现在看来,git插件提供了一种将Jenkins指向主目录的方法。
答案 3 :(得分:0)
在我的环境中(Jenkins 64位,带有Java 32位,在Windows Server 2016 64位中运行),解决方案是将密钥放在 C:\ Windows \ SysWOW64 \ config \ systemprofile \ .ssh 文件夹。根据{{3}}:
默认情况下,Jenkins Windows安装程序将Jenkins设置为在Windows上作为服务运行,该服务作为“本地系统帐户”运行,而不是您的用户帐户。由于“本地系统帐户”没有设置SSH密钥或known_hosts,因此“git clone”将在构建期间挂起。可以保持Jenkins作为“本地系统帐户”运行并通过SSH克隆存储库,确保“本地系统帐户”设置了正确配置的.ssh目录(即id_rsa,id_rsa.pub和AND known_hosts)< / p>