jenkins构建生成docker镜像

 

pipeline {
    agent any
    
    environment {
        CODE_DIR = "/jenkins_data/springboot_test"
        DATE = new Date().format('YYYYMMddHHmmss')
        TAG = "${DATE}"
        IMAGE_NAME = 'springtest'
        IMAGE_NAME_ALIYUN = "registry.cn-shenzhen.aliyuncs.com/hxlk8s/${IMAGE_NAME}:${TAG}"
        MYPROJ_DIR="/var/lib/jenkins/workspace/dockertest/"
        MYPROJ_FILENAME="demo-1.0-SNAPSHOT.jar"
    }

    stages {
        stage('Initialization'){
          steps{
            script{
                currentBuild.displayName='dev'
                currentBuild.description="mytest "
            }
          }
        }
        
        stage('清理并创建目录') {
            steps {
                echo "开始清理旧目录:${CODE_DIR}"
                sh "rm -rf ${CODE_DIR} || true"
                echo "旧目录清理完成,开始创建新目录:${CODE_DIR}"
                sh "mkdir -p ${CODE_DIR}"
                echo "新目录创建完成:${CODE_DIR}"
            }
        }
        
        stage('拉取代码') {
            steps {
                echo "进入目录:${CODE_DIR},开始拉取Git代码"
                // dir步骤:切换到指定目录执行后续操作(相当于cd ${CODE_DIR})
                dir("${CODE_DIR}") {
                    // 拉取Git代码
                    git(url: "http://192.168.1.105/devops/springboot.git",branch: "master",)
                    echo "Git代码拉取完成,当前目录文件列表:"
                    // 查看目录内容,验证代码是否拉取成功
                    sh "ls -l"
                    sh "pwd"
                }
            }
        }

        stage('maven打包') {
            steps {
                echo "进入代码目录打包:${CODE_DIR}"
                dir("${CODE_DIR}") {
                    sh 'mvn clean package'
                }
            }
        }

        stage('拷贝打包文件') {
            steps {
                echo "进入代码目录打包:${CODE_DIR}"
                dir("${CODE_DIR}/target/"){
                    sh "cp ${MYPROJ_FILENAME} ${MYPROJ_DIR}"                    
                }
            }
        }
        

        stage('Build Docker Image') {
            steps {
                dir("${MYPROJ_DIR}"){
                    script {
                        docker.build("${IMAGE_NAME_ALIYUN}")
                    }
                }
            }
        }

        stage('Test Image') {
            steps {
                script {
                    // 运行Docker容器进行测试
                    docker.image("${IMAGE_NAME_ALIYUN}").inside {
                        sh 'echo "Running tests inside the container"'
                        // 运行测试脚本
                    }
                }
            }
        }
        
        stage('Deploy') {
            steps {
                script {
                    // 使用Docker推送镜像到Docker Hub
                    docker.withRegistry('https://registry.cn-shenzhen.aliyuncs.com', 'aliyun-hub-credentials') {
                        docker.image("${IMAGE_NAME_ALIYUN}").push()
                    }
                }
            }
        } 
    }
}

 

posted @ 2025-11-14 14:50  slnngk  阅读(3)  评论(0)    收藏  举报