• 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. 构建测试


  • 相关阅读:
    Silverlight MMORPG WebGame游戏设计(三)Server和Client的暗号
    Silverlight MMORPG WebGame游戏设计(七)IsolatedStorage,想说爱你不容易
    如何在WP7上用XNA写2D游戏(四)
    Silverlight MMORPG WebGame游戏设计(六)Server和Client的婚后协议[附上完整15M游戏DEMO]
    我的2010年
    如何在WP7上用XNA写2D游戏(一)
    笑话一片
    设计模式简单概括总结2
    设计模式简单概括总结
    ExtJs 4 动态加载grid
  • 原文地址:https://www.cnblogs.com/zoujiaojiao/p/13277532.html
Copyright © 2020-2023  润新知