Jenkins 凭证如何工作或应用于管道中的代理

阿尼鲁达

我遵循了两段代码,一项有效,另一段无效。我需要了解是否在agent阶段内声明了凭据,是否识别了凭据,如果agent在顶级/全局级别声明了凭据,则凭据不起作用并以错误结束。谁能帮助理解为什么会这样以及如何解决这个问题?

错误:

pipeline 
{
    environment {
    DOCKER_REGISTRY='xxxxxxxxx'
    DOCKER_CREDENTIAL='dcaas-r'
  }
  agent 
  {
     docker { 
     image "xxxxxxxxx/dotnet:latest"
     registryUrl env.DOCKER_REGISTRY
     registryCredentialsId env.DOCKER_CREDENTIAL
     reuseNode true
     }
  }    
    stages 
    {
        stage('Test') 
        {
            steps 
            {
                sh 'dotnet --version' 
            }
        }
    }
}

Error response from daemon: Head "xxxxx/dotnet/manifests/latest": unknown: Authentication is required

成功:

pipeline 
    {
        agent any
        environment {
        DOCKER_REGISTRY='xxxxxxxxx'
        DOCKER_CREDENTIAL='dcaas-r'
      }
   
        stages 
        {
            stage('Test') 
            {
               agent 
               {
                  docker { 
                  image "xxxxxxxxx/dotnet:latest"
                  registryUrl env.DOCKER_REGISTRY
                  registryCredentialsId env.DOCKER_CREDENTIAL
                  reuseNode true
                  }
               } 
                steps 
                {
                    sh 'dotnet --version' 
                }
            }
        }
    }

为了不写相同agent的块,可以做些什么stages

马特·舒查德

如果您有一个全局代理指令,那么您不需要将 docker 值指定为环境变量,因为

  • 它们不是环境变量
  • 它们只使用一次
  • 它们不是动态的

它看起来像:

agent {
  docker { 
    image                 'xxxxxxxxx/dotnet:latest'
    registryUrl           'xxxxxxxxx'
    registryCredentialsId 'dcaas-r'
    reuseNode             true
  }
}    

您将只查看阶段的日志,因此不会记录全局指令。这意味着您将无法agent在全局指令中看到 docker 的图像检索日志。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带有GDSL的IntelliJ中的Jenkins管道。警告:“节点”不能应用于“(groovy.lang.closure <Object>)”

如何在 Jenkins 管道中的所有代理上构建?

如何在Jenkins中限制凭证?

在 Jenkins 管道中创建和使用新凭证的最佳方式?

使用声明性管道中的jenkins凭证进行Git推送

jenkins管道:代理vs节点?

Jenkins 管道中的 FileNotFoundException

在管道中使用 Jenkins 全局凭证 (Jenkinsfile)

Jenkins:如何使用jenkins管道多个参数

Jenkins管道擦除工作区

Jenkins 如何在多个标签之间选择管道代理?

如何在多个代理上对Jenkins管道使用发布步骤?

从 Jenkins 管道中的 docker 代理运行时,Ansible 失败

Jenkins 代理作为 Jenkins 管道阶段级别的变量

如何在管道中为Dockerfile代理覆盖Jenkins的随机图像标签

如何强制管道中的不同阶段在同一个 Jenkins 代理上运行?

如何基于Jenkins声明式管道中的参数使用不同的私有docker代理?

所有新工作的Jenkins SVN凭证

如何附加到 Jenkins 管道中的文件?

如何将文件从工作区外部的目录复制到Jenkins管道中的工作区

如何从奴隶启动Jenkins代理?

在Jenkins管道中使用SSH代理凭据

AWS ECR的Jenkins管道Docker代理

Jenkins管道代理使用环境变量

Jenkins声明性管道:仅为管道设置代理时,与阶段关联的工作空间是什么?

Jenkins管道中的Jacoco报道

Jenkins管道中作业DSL中的工作区路径

Publishhtml在Kubernetes中不适用于jenkins代理

您如何通过代理运行Jenkins的工作流量?