如何在Jenkins中使用Github个人访问令牌

58
我可以用多种方式提出这个问题,比如如何使用Github个人访问令牌配置Jenkins凭据?如何使用Github个人访问令牌在Jenkins中克隆Github存储库?
所以这就是问题。

我知道的另一种解决方案是

但我的问题是如何使用个人访问令牌设置Jenkins与GitHub的连接

7个回答

99
[更新] git 提出的新解决方案是

https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/

起始于2021年8月13日,我们将不再接受账户密码进行Git操作认证,并要求在GitHub.com上所有已验证的Git操作中使用基于令牌的身份验证,例如个人访问令牌(适用于开发人员)或OAuth或GitHub应用程序安装令牌(适用于集成商)。您也可以继续使用SSH密钥。需要您做的是:

https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/#what-you-need-to-do-today

基本上,将添加URL更改为 https://<access token>@github.com/<userName>/<repository>.git 类似于这样 https://<access token>@github.com/dupinder/NgnixDockerizedDevEnv.git 并将凭据设置为无。
感谢 @Gil Stal

[旧技术]

在Stackoverflow的多个帖子上进行了许多讨论

我发现其中一个帖子很有用。

请参考此答案: https://stackoverflow.com/a/61104603/5108695


基本上,就 Jenkins 而言,“个人访问令牌” 可以像密码一样使用。我将新凭据添加到凭据管理器中。
前往 Jenkins
  • 转到 凭据 > 系统 > 全局凭据 > 添加凭据 页面将会打开。
  • 类型 下拉列表中选择 用户名和密码
  • 在用户中输入不存在的用户名,如 jenkins-useruser
  • 在密码字段中添加 个人访问令牌

现在开始配置您的项目。
  • 源代码管理选项卡,在凭据附近的下拉菜单中选择新配置的凭据,在仓库URL下方

这就是我们如何使用个人访问令牌在Jenkins和Github之间配置或设置身份验证的方法。

参考:
在Jenkins中使用个人访问令牌永远处于空闲状态
更改Jenkins管道以使用GitHub而不是GitLab


3
注意不要复制个人访问令牌末尾的空格。 - Daniel Leach
3
在GitHub中,正确设置个人访问令牌的权限非常重要。例如,您可能需要在GitHub中为您的令牌打开“repo”权限。 - albert c braun
2
我发现这是在Jenkins CI/CD作业中使用个人访问令牌的最简单方法。 - GreenROBO
4
看起来这个不再起作用了。 - Yamuk
4
这种方法存在两个问题:1)每次写入URL时,都会将PAT写入您的日志中,2)需要将PAT复制到需要它的每个作业的URL中。这些不良副作用使此答案不可取。 - teuber789
1
您可能还需要在组织以及仓库中设置个人访问令牌的权限。 - Portalus

11

1
我发现仓库不存在。 - Prostak
你应该根据自己的详细信息更改repo url。我已经更新了答案以提高清晰度。 - Gil Stal
“被接受的答案”可能会改变。哪一个答案呢? - philipxy

2
截至2021年8月,Dupinder Singh发布的答案是准确的。唯一需要补充的是,如果你是团队的一员,URL格式似乎会有所不同。以下是对我有效的格式:
https://<access token>@github.com/<team>/<repo>.git

例如
https://ghp_6dh3jdk394jsmbh299jjdg20fh87hd83ksk39@github.com/MyKuleTeam/KuleGuyCode.git

请注意,如果您使用个人访问令牌,则无需在Jenkins中存储任何Github凭据。


2
关于 Jenkins Github 插件 的凭据,请注意该插件现在仅接受 个人访问令牌
要生成此类令牌,请遵循 Github 文档(例如,此处)。不要保存它,如果丢失或迁移到其他服务器时可以在 Github 上重新生成并在 Jenkins 中更新。
要将令牌添加到 Jenkins 凭据存储中,请转到 <JENKINS_URL:PORT>/credentials/store/system/domain/_/newCredentials 并选择种类为 "Secret text" 的选项(而非默认的 "用户名和密码"),然后将令牌粘贴到 Secret 中并选择某个 ID。
测试:凭据应出现在凭据列表中 <JENKINS_URL:PORT>/credentials/,并可从下拉列表中选择 <JENKINS_URL:PORT>/configure/,按下 "Test connection" 按钮应显示 "Credentials verified for user <GITHUB_USER>"。
更多信息:参见 Github 插件文档
注意:Git 插件存在其长期的问题,因此如果新创建的 "Secret text" 在您的管道中未出现,请尝试此解决方案(将 "触发构建的用户" 视为比 "SYSTEM" 更安全):client-and-managed-masters/why-credentials-are-not-listed-in-the-git-scm-section

1
我的列表上没有秘钥,只有“用户名和密码” 插件在两天前停止工作,“消息”:“凭证无效...” - xFloooo

2

虽然将访问令牌添加到URL中(根据接受的答案)可以工作,但这似乎不是特别好的做法,因为这意味着您的秘密访问令牌现在散布在Jenkins日志中。

相反,您可以:

  • 将个人访问令牌存储为Jenkins的凭据
  • 配置您的任务使用存储的令牌

1. 在 Jenkins 上存储您的 GitHub Token 作为具有适当权限的 Jenkins 用户:

  • 在“管理 Jenkins”>“管理凭据”下,向全局域(或适用于您的任何范围)添加新凭据: enter image description here
  • 配置以下字段:
    • 类型:“用户名和密码”,即使它是一个令牌。最后一次测试时,如果配置了其他类型,则在配置 Jenkins 作业时不会可供选择。
    • 输入您的 GitHub 用户名。
    • 在密码字段中输入个人访问令牌。
    • 可以将 ID 留空,或设置为更容易识别的内容。
    • 描述也很有帮助。 enter image description here
  • 按“创建”按钮。

2. 配置您的作业以使用令牌

在作业的配置中,进入“源代码管理”>“Git”,设置:

  • 存储库 URL:设置您的存储库的常规 URL(无需令牌)。

  • 凭据:选择上面创建的 GitHub 令牌。 enter image description here

  • 或者,如果使用声明性 Pipeline,可以添加如下步骤:

    git branch: 'main', credentialsId: 'GitHub-token', url: 'https://github.com/your-github-username/your-repo'
    

2
对于个人访问令牌,请选择用户名和密码,并将令牌添加到新凭据的用户名和密码部分,以便在凭据管理器中使用。
前往Jenkins。
Go to credentials > System > Global credentials > Add credentials
On the Kind drop-down select Username and password.
On the User section put the token.
Add the token in the password field
Then save

1
截至2020年4月,有另一种方法可供使用,据说比个人访问令牌更优越。最好的部分是,您可以继续使用用户名/密码样式的凭据,而插件将在后台处理与GitHub的身份验证。
其优点包括:
  • 更大的速率限制 - GitHub应用程序的速率限制随着组织规模扩大而扩展,而基于用户的令牌的速率限制不管你有多少存储库,都限制为5000。

  • 用户独立认证 - 每个GitHub应用程序都有自己的用户独立认证。不再需要“机器人”用户或找出谁应该是2FA或OAuth令牌的所有者。

  • 改进的安全性和更严格的权限 - 与服务用户及其个人访问令牌相比,GitHub Apps提供了更精细的权限。这使得Jenkins GitHub应用程序需要运行所需的权限更小。

  • 访问GitHub Checks API - GitHub Apps可以访问GitHub Checks API,从Jenkins作业创建检查运行和检查套件,并提供有关提交的详细反馈以及代码注释

链接:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接