我在Win 2008服务器机器上设置Jenkins,并且在configurationJenkins连接到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)
我已经检查的东西
jenkinsconfiguration设置
msysgit工作,但CMD提示不当我浏览到一个有效的回购,并从DOS提示符执行命令,也失败。
你有什么想法我可能会失踪?
谢谢你的帮助。
正如我所说,使用ssh协议时,指定HOME
环境变量是关键。
由于Windows没有HOME
,所以你需要明确地定义它到你想要的任何目录。
但是, Vestnik评论道:
我已经指定在Windows从属节点上覆盖
HOME
,将其指向C:\jenkins
。
我已经把C:\jenkins\.ssh
下的正确的id_rsa
,但仍然有这个问题。
我的奴隶代理在SYSTEM帐户下作为服务运行。
两个建议:
set
为“ set
”,以检查与SYSTEM帐户一起使用时是否定义了HOME。 %HOME%\.ssh
目录中同时包含id_rsa
和id_rsa.pub
:您需要public和private ssh密钥。 (正如在“ git clone with ssh issue ”中提到的) 如果你有一个参数化版本,你也可以这样定义HOME
,并检查你的slave是否为HOME
选择了正确的值:
jenkins中有两个与ssh相关的插件可以使用: 通过SSH和Jenkins SSH插件 发布 。
第一个插件提供了设置全局ssh密钥的可用性,第二个插件提供了设置各种ssh密钥的可用性。
接下来,您需要再安装两个插件,这些插件将用于项目配置GitHub Plugin和Jenkins Git Plugin 。
GitHub插件将用于设置GitHub项目 。 Jenkins Git插件将用于设置“存储库的URL”和其他事物,如分支等。
所有插件都可以从Jenkins插件管理器中的选项卡中获得。
从我的博客文章复制的话题 :
詹金斯配置:
Jenkins SSH插件提供了为每个主机设置私钥的可用性,第二个插件为全局主机做了工作。
如果使用Jenkins SSH插件,则在SSH远程主机中写入主机,用户,密码和私钥的路径。
如果使用通过SSH发布,则在SSH设置中写入密码并粘贴私钥或写入路径。
项目配置是:
GitHub项目https://github.com/GitUser/iOS-project/
*源代码管理
– > Git
– > – >存储库
– > – > – >存储库的URL:git@github.com:GitUser / iOS-project.git
– 这取决于你配置一个分支或采取默认的一个 –
*建立触发器
– >民意调查SCM – Seted –
– >日程安排:* * * * *
*建立
– >执行shell
-> -> 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>"
看来,git插件现在提供了一种将Jenkins指向主目录的方法。
在我的环境中(Jenkins 64位,Java 32位,运行于Windows server 2016 64位),解决方案将密钥放在C:\ Windows \ SysWOW64 \ config \ systemprofile \ .ssh文件夹中。 根据Git插件文档 :
默认情况下,Jenkins Windows安装程序将Jenkins设置为在Windows上作为服务运行,作为“本地系统帐户”而不是您的用户帐户运行。 由于“本地系统帐户”没有设置SSH密钥或known_hosts,“git clone”会在构建过程中挂起。 通过确保“本地系统帐户”设置了正确配置的.ssh目录(即id_rsa,id_rsa.pub,AND known_hosts),可以让Jenkins以“本地系统帐户”的形式运行,并通过SSH克隆存储库。