Jenkins - Github插件 - 使用个人访问令牌(在2021年8月13日之后的更改后必需)

7

我们迄今为止在Jenkins设置中使用用户名和密码凭据与GitHub插件。

然而,2021年8月13日之后,这种方式停止工作,并出现以下错误:

stderr:remote:从2021年8月13日起停止支持密码身份验证。请改用个人访问令牌。 有关更多信息,请参见 https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/

根据如何在Jenkins中使用GitHub个人访问令牌的答案:

我修改了URL:

https://<access token>@github.com/<userName>/<organization>/<repository>.git

但这并没有起作用。

我漏掉了什么步骤吗?


那不是他们说的URL应该是什么。你实际上做了什么?你把PAT放在哪里了? - fredrik
@fredrik - <accesstoken> 是我存放个人访问令牌(PAT)的地方... 参考链接 - https://dev59.com/tVIH5IYBdhLWcg3wH5X1 。我还尝试使用 Jenkins 的“用户名-密码”凭据,其中密码是我的 PAT。 - Lakshmi
你得到了什么错误? - fredrik
stderr: remote: 2021年8月13日起,不再支持密码验证。请使用个人访问令牌进行身份验证。请参阅https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/获取更多信息。 - Lakshmi
4个回答

20

使用下面的URL创建您的私有访问令牌:

https://docs.github.com/cn/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

之后,在Jenkins作业的源代码管理部分,按照以下格式提供Git存储库URL:https://access_Token_Number@github.com/<Your_Org>/yourRepoName.git

例如,如果存储库名称为abc,组织名称为test,令牌编号为12345678,则URL将如下所示:

https://12345678@github.com/test/abc.git

屏幕截图: Git Private Access Token binding

此方法解决了我的问题。


只需访问令牌即可,无需附加用户名。 - hussains8
在这种情况下,不需要绑定凭据。@Lakshmi - hussains8
提供的URL格式错误,导致出现错误。状态码128: 标准输出: 标准错误: 致命错误: 无法提示,因为用户交互已被禁用。 远程: 用户名或密码无效。 致命错误: 验证失败。 - Lakshmi
我在回答帖子中添加了截图,请看一下。我没有收到任何错误信息。 - hussains8
很高兴听到这个消息。请评价答案,以便其他人也能受益。 - hussains8
显示剩余6条评论

1
这不是关于更改URL的问题。Jenkins明确表示需要个人访问令牌(PAT)而不是密码进行git授权。
请使用以下链接创建PAT: [https://docs.github.com/zh/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token][1]
然后转到Jenkins->配置作业->源代码管理,按以下方式更改存储库URL: https://access_Token_Number@github.com//yourRepoName.git
访问令牌号:您将使用上面共享的链接生成的PAT 组织名称:您的存储库存在其中的全局名称 RepoName:已配置Jenkins作业的存储库名称

1
为了实现更可扩展的解决方案,定义 GitHub token 并多次使用它(DRY)。您可以将其保存在凭据中(Jenkins 的密钥环)。
步骤如下:
1. 生成 GitHub 个人访问令牌 PAT(并将其保存在安全的位置):
设置 > 开发者设置 > 个人访问令牌(link)。
2. 在 Jenkins 中创建一个新凭据(“用户名和密码”类型),将 GitHub PAT 输入为密码:
管理 Jenkins > 凭据 > 系统 > 全局凭据 > 添加凭据 > 类型 > 用户名和密码 (https://<JENKINS_URL>/manage/credentials/store/system/domain/_/)。
3. 在所有克隆 GitHub 存储库的流水线中使用新凭据。

<PIPELINE_NAME> >配置>管道>定义>来自SCM的管道脚本> SCM> Git>凭据 (https://<JENKINS_URL>/job/<PIPELINE_NAME>/configure)。


-1
Jenkins提供了凭证存储库,我们可以将秘密保存在其中。最佳实践是将其保存为本地变量,并将个人令牌连接到git URL上:"https://access_Token_Number@github.com/<Your_Org>/yourRepoName.git"。

1
您的答案可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认您的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

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