You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Pipeline:使用docker.withRegistry替代docker login认证失败求助

Jenkins Pipeline docker.withRegistry认证失败修复方案

问题根源

你之前的写法错误在于:

  • docker.withRegistry的第二个参数需要传入Jenkins凭据ID,而非直接传入token值
  • 原docker login中的用户名axhdhcololjk/jenkins未被传入,认证时缺少关键身份信息

正确实现方式

方式1:使用Jenkins预配置凭据(推荐)

  1. 在Jenkins凭据管理中创建用户名密码类型凭据:

    • 用户名:axhdhcololjk/jenkins
    • 密码:你的OCI_AUTH_TOKEN实际值
    • 凭据ID:自定义(比如oci-registry-creds)
  2. Pipeline代码改写:

docker.withRegistry("https://jed.ocir.io", "oci-registry-creds") {
    // 在此代码块内执行需要认证的Docker操作,例如:
    docker.image("your-image-name").push()
}

方式2:动态传递凭据(不推荐,存在安全隐患)

若无需预配置凭据,可通过credentials方法绑定用户名和token:

def registryUrl = "https://jed.ocir.io"
def creds = credentials([usernameVariable: 'OCI_USER', passwordVariable: 'OCI_TOKEN'])

docker.withRegistry(registryUrl, creds) {
    // 执行Docker操作
}

注:此方式需确保Jenkins中已存在对应用户名和token的凭据,或通过参数传递这两个值。

官方文档核心内容翻译

docker.withRegistry(url, credentialsId) 用于指定Docker仓库地址及认证凭据:

  • 第一个参数为仓库完整URL,必须包含协议(如https://)
  • 第二个参数为Jenkins中已配置的凭据ID,该凭据必须是用户名密码类型,用于完成仓库认证
  • 代码块内的所有Docker操作(拉取、推送镜像等)都会自动使用该凭据完成认证

内容的提问来源于stack exchange,提问作者Zama Ques

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:15:07