我的目标是将私有Github仓库拉到Jenkins。
以下是一些背景:
- macOS
- Jenkins本地托管,
localhost:8080
1.在Jenkins中安装Git插件和Github插件。
1.如果我把仓库变成Public,Jenkins里的一切都很好。
1.从命令行,我可以用我在Jenkins中使用的相同凭据来执行“git clone”这个私有存储库。
但是当我把它变成Private并将其用作Jenkins的Source时,它就坏了。
错误包括:
Building in workspace /Users/Shared/Jenkins/Home/jobs/TestFramework/workspace
> /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> /usr/bin/git config remote.origin.url https://github.com/XXXXXXX/testframework.git # timeout=10
Fetching upstream changes from https://github.com/XXXXXXX/testframework.git
> /usr/bin/git --version # timeout=10
using GIT_ASKPASS to set credentials
> /usr/bin/git fetch --tags --progress https://github.com/XXXXXXX/testframework.git +refs/heads/*:refs/remotes/origin/* # timeout=5
ERROR: Timeout after 5 minutes
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from https://github.com/XXXXXXX/testframework.git
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:806)
at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1070)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1101)
at hudson.scm.SCM.checkout(SCM.java:496)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1278)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:604)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
at hudson.model.Run.execute(Run.java:1728)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:405)
Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git fetch --tags --progress https://github.com/XXXXXXX/testframework.git +refs/heads/*:refs/remotes/origin/*" returned status code 143:
我在网上试了几个建议:
- ssh-keygen到/Users/shared/jenkins/.ssh/id_rsa
- ssh-keygen到/Users/jason/.ssh/id_rsa
1.将两个对应的“id_rsa.pub”添加到私有存储库“Settings”=>“Deploy keys”。
但还是不行。
3条答案
按热度按时间js5cn81o1#
我想问题可能是:当Jenkins试图克隆一个repo或获取有关repo的信息时,它将使用一个名为jenkins的用户名。当然,这个用户没有权限访问您的私有存储库。如果你从命令行执行,你将使用自己的用户名,因此你可以成功克隆一个repo。
您可以通过在项目配置中更改源代码管理的设置来解决这个问题。
我们正在做的是为github repo使用一个“带密码的证书”。
1.在输入“储存库网址”后,您可以点击“凭证”旁边的“新增”按钮,新增一个“带密码储存库”凭证。
1.在弹出窗口中,为“种类”字段选择“密码验证”。
1.输入您的Github帐户的用户名和密码并保存。
1.然后,您可以在设置源代码管理时在“Credential”字段中选择刚刚添加的此凭据。
希望这对你有帮助。
(使用凭证插件添加您的帐户和密码是安全的,因此您无需担心暴露您的帐户和密码)
p1iqtdky2#
在你的git url之前使用用户名和访问令牌,比如
https://gitusername:git_access_token@git_url
vybvopom3#
你必须在jenkins中使用PAT(个人访问令牌)配置github凭据
Go to Jenkins-Dashboard --> Manage jenkins --> Credentials
设置您的私人回购凭据,现在你是好去.