如何将Jenkins链接到私有Github仓库?

z3yyvxxp  于 2023-10-17  发布在  Jenkins
关注(0)|答案(3)|浏览(618)

我的目标是将私有Github仓库拉到Jenkins。
以下是一些背景:

  1. macOS
  2. 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:

我在网上试了几个建议:

  1. ssh-keygen到/Users/shared/jenkins/.ssh/id_rsa
  2. ssh-keygen到/Users/jason/.ssh/id_rsa
    1.将两个对应的“id_rsa.pub”添加到私有存储库“Settings”=>“Deploy keys”。
    但还是不行。
js5cn81o

js5cn81o1#

我想问题可能是:当Jenkins试图克隆一个repo或获取有关repo的信息时,它将使用一个名为jenkins的用户名。当然,这个用户没有权限访问您的私有存储库。如果你从命令行执行,你将使用自己的用户名,因此你可以成功克隆一个repo。
您可以通过在项目配置中更改源代码管理的设置来解决这个问题。
我们正在做的是为github repo使用一个“带密码的证书”。
1.在输入“储存库网址”后,您可以点击“凭证”旁边的“新增”按钮,新增一个“带密码储存库”凭证。
1.在弹出窗口中,为“种类”字段选择“密码验证”。
1.输入您的Github帐户的用户名和密码并保存。
1.然后,您可以在设置源代码管理时在“Credential”字段中选择刚刚添加的此凭据。
希望这对你有帮助。
(使用凭证插件添加您的帐户和密码是安全的,因此您无需担心暴露您的帐户和密码)

p1iqtdky

p1iqtdky2#

在你的git url之前使用用户名和访问令牌,比如
https://gitusername:git_access_token@git_url

vybvopom

vybvopom3#

你必须在jenkins中使用PAT(个人访问令牌)配置github凭据

  • 首先,你需要从你的github帐户生成PAT,然后你可以在jenkins上设置它。

Go to Jenkins-Dashboard --> Manage jenkins --> Credentials
设置您的私人回购凭据,现在你是好去.

相关问题