jenkins - Jenkins groovy 无法通过 https 端口使用 oauth 令牌克隆 gitlab 存储库
问题描述
我无法使用 oauth2 令牌通过 https 通过 jenkins groovy 从 gitlab 签出代码。
使用相同的 oauth 令牌在 git cli 上进行克隆。我还可以通过 curl 在同一台机器上列出我所有的 Gitlab 项目。
但无法通过 groovy 管道使用 Oauth2 令牌调用 git clone。
约束:Jenkins 服务器需要通过 groovy 脚本使用 oauth2 令牌通过 https 端口(仅)与 gitlab 服务器通信。我想使用 jenkins 凭证管理器来存储 Oauth2 令牌 - 而不是直接通过 s 脚本传递它
错误:状态码 128:stderr:远程:HTTP Basic:访问被拒绝
**用于结帐的 Groovy 代码**
checkout([$class: 'GitSCM', branches: [[name: "*/$GIT_BRANCH"]], doGenerateSubmoduleConfigurations: false, extensions: [], gitTool: 'Default', submoduleCfg: [], userRemoteConfigs: [[credentialsId: "$GIT_CREDS_ID", url: "$GIT_URL"]]])
问题是 $GIT_CREDS_ID :只选择具有 SSH 私钥或用户名/密码组合的凭据 ID。但不选择具有 Oauth 令牌的凭证 ID(在安装 git lab 插件后创建)
错误 :
Warning: CredentialId "2002" could not be found. # same is being listed under jenkins credentials
> git rev-parse --is-inside-work-tree # timeout=10
...
Caused by: hudson.plugins.git.GitException: Command "git fetch --tags --progress https://git.my-gitlab-site.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout:
stderr: remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://git.my-gitlab-site.git/'
相同的 oauth 令牌可以通过 curl 、 git cli 正常工作,即使我直接在 git 的 https url 中传递它,例如: https://oauth2:SomeDummyToken@git.aa.st/c-swajai/poc_devops_coe.git
但不能通过詹金斯使用相同的。
系统详情 Jenkins 版本。2.172
操作系统“亚马逊 Linux”版本“2”
发现一个相关的错误: https ://issues.jenkins-ci.org/browse/JENKINS-36863
解决方案
我发现了一个相关的oldbug(状态:已解决),它似乎在最新版本的 jenkins 中重新出现。其他面临类似问题的解决方法。
创建用户名和密码类型的新凭据
用户名:AnyRandomString
密码:YourOauthToken
凭据 ID:任何自定义数字/字符串
克隆时在 groovy 脚本中使用上述凭证 ID。现在您可以使用 Oauth 令牌在 443 端口上使用 https url 克隆 git
推荐阅读
- c# - 命令执行期间遇到致命错误 - C# 仅在 Linux 中
- java - 如何在方向更改时修复 TextWatcher?
- c# - 如何使用实体框架 6 代码优先方法在 SQL Server 中创建序列并应用两个表?
- docker - Pod 无法相互通信
- jqgrid - Jqgrid rowid 问题
- javascript - Stripe 集成 - 带有结帐重定向的付款意图
- javascript - React - Promise - “this”未定义
- selenium - How to select elements with the same css selector
- python - 如何使用 Python 获取 TIFF 图像的文本图章
- python - 在 https 站点上使用 urllib3 时出现 Python“SSL:不支持的协议”错误