无法使用Jenkinsfile在注册表上推送Docker映像

时间:2019-06-26 09:23:04

标签: docker jenkins openshift

我正在尝试通过存储库上的Jenkinsfile推送图像,但是当我这样做时,我将面临以下错误。

Error response from daemon: Get https://mydockerregistryurl/v1/users/: x509: certificate signed by unknown authority

我找到了很多与此有关的文章,但对这些都不了解。

任何人都可以尝试帮助我吗?

下面是我的詹金斯文件。

#!groovy

pipeline {
  agent {
    node {
      label 'otd-agent'
    }
  }
  stages{
    stage('Test Stage'){
      steps{
          sh 'mvn clean test'
      }
    }
    stage('SonarQube Analysis'){
      steps{
        withSonarQubeEnv('otd-sonar') {
          sh 'mvn sonar:sonar'
        }
      }
    }
    stage('Package Stage'){
      steps{
        sh 'mvn clean package'
      }
    }
    stage('Building Docker image') {
      steps{
        script {
          sh 'docker build . -t jagathe-spike'
        }
      }
    }
    stage('Deploy Docker Image') {
      steps{
        script {
          sh 'docker login -u username -p password docker-registry-default'
          sh 'docker push docker-registry-default/otd-agathe'
        }
      }
    }
  }
}

2 个答案:

答案 0 :(得分:1)

如果目标注册表docker-registry-defaultOpenShift上运行,则应该部署OCP CA证书,该证书将从OCP下载到您的Jenkins主机上。 有关更多详细信息,请参见Installing a certificate authority certificate for external registries

例如,

  • 从OCP下载CA证书。
jenkins ~# scp root@master1.ocp.example.com:/etc/origin/master/ca.crt \
           /etc/pki/ca-trust/source/anchors/ocp-ca.crt
  • 执行update-ca-trust以注册CA。
jenkins ~# update-ca-trust extract
  • 按如下所示将CA复制到/etc/docker/certs.d。($ {}是占位符,您应该用自己的信息正确替换它)
jenkins ~# cp /etc/pki/ca-trust/source/anchors/ocp-ca.crt \
           /etc/docker/certs.d/${docker-registry-default}:${PORT}
  • 重新启动docker服务以重新加载
jenkins ~# systemctl restart docker.service

希望对您有帮助。

答案 1 :(得分:0)

按照https://jenkins.io/doc/book/pipeline/docker/

的说明使用withRegistry()方法