jenkins pipeline 調用遠程docker宿主機進行打包鏡像和推送鏡像


jenkins pipeline 調用遠程docker宿主機打包鏡像

需要使用遠程docker宿主機打包鏡像的原因是有兩點:1. 我的Jenkins是通過k8s集群啟動的,Jenkins容器中沒有安裝docker環境。2. 開發提供的代碼沒有使用Maven 插件 docker-maven-plugin。

docker API接口放開請參考:https://www.cnblogs.com/zoujiaojiao/p/13277862.html

Jenkins安裝docker工具

在系統管理-全局工具配置中安裝docker工具

Jenkins是用容器啟動的,掛在路徑是/data/jenkins/docker:/var/jenkins_home/docker
沒有進入容器中安裝docker,直接將docker的bin下面內容拷貝到該路徑。

pipeline中調用

前面省略了,調用docker工具,需要進行變量賦值
    stages {
        stage('准備'){
            steps{
                script{
                   ACTION = "${Dev_or_Test}"
                   def dockerPath = tool 'docker-19.03.8'   //全局工具
                   env.PATH = "${dockerPath}:${env.PATH}"   //導入環境變量
                }
            }
        }
        stage('拉代碼') {
            steps {
                echo '開始拉取代碼.....'
                echo '${params.BRANCH}'
                git branch: "${params.BRANCH}", credentialsId: '7367665a-9XXXX13f5ea29', url: 'http://gitlab.XXX/admin.git'
            }
        }
        stage('編譯打包鏡像') {
            steps {
                echo '開始執行打包操作.......'
                sh 'mvn -f ./pom.xml clean install -Dmaven.test.skip=true -U'
                //調用遠程的docker進行打包
                sh 'docker -H tcp://10.10.3.72:2375 build -t docker.vonedao.com/vonedao-cs/vonedao-job-admin:1.0.0 .'
               //調用遠程的docker進行鏡像推送。倉庫docker.vonedao.com需要登錄賬戶密碼,可以拷貝配置過來。后面有說明
                sh 'docker -H tcp://10.10.3.72:2375 push docker.vonedao.com/vonedao-cs/vonedao-job-admin:1.0.0'
            }
        }

        stage('部署開發環境 ') {
            steps {
                echo '開始發布開發環境 .......'
                sh '/var/jenkins_home/piplineshell/deploy_dev.sh'
                
            }
        }
后面其余代碼省略

構建時報錯:unauthorized: access to the requested resource is not authorized,如下圖:

報錯原因是:jenkins容器中執行docker push 時,倉庫需要登錄。

解決辦法

Jenkins容器是以Jenkins賬戶啟動,Jenkins的home目錄是 /var/jenkins_home,掛載在宿主機/data/jenkins,我們只需要將登錄倉庫的賬戶密碼文件復制到Jenkins容器的Jenkins賬戶下就可以了。

操作過程

  1. 在宿主機上進行docker login docker.vonedao.com

    圖中提示密碼存在/root/.docker/config.json中。
  2. 復制密碼文件
cp /root/.docker/config.json /data/jenkins/.docker/config.json
  1. 構建測試



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM