• jenkins mvn pipeline (docker 编译 发布还未生成镜像)


    jenkins pipeline file

    currentBuild.description="${BRANCH}_${ENV}"
    pipeline{
        agent { 
            node {
                label 'master'
                customWorkspace "workspace/${JOB_NAME}_${ENV}"
            }
       }
    
        post {
            success {
                sh '''
                    curl -H "Content-Type: application/json" -X POST -d '{"branch":"'${BRANCH}'","project_name":"'${PROJECT_NAME}'","test_env":"'${ENV}'","artifact":"'`${ID}`'"}' http://hbtc.houbank.net:8000/api/release/artifactInfo/
                    '''
            }
        }    
        
        options {
            //保持构建的最大个数
            buildDiscarder(logRotator(numToKeepStr: '10'))
        }
        parameters {
            choice(name: 'ENV', choices: 'mit
    sit
    uat
    prod', description: 'env')
            string(name: 'STATUS', defaultValue: '改造后', description: '环境变量迁入配置中心')
            string(name: 'BRANCH', defaultValue: '${gitlabSourceBranch}', description: '选择发布的分支,默认为git触发分支')
            string(name: 'GIT', defaultValue: 'https://code.houbank.net/project/kuaiyipai_server.git', description: 'git地址')
        }
        environment {
            LOB = "telesale" //业务线
            postfix="jar"
            TARGET_FILE="kuaiyipai-app-api/target/kuaiyipai-app-api.${postfix}"
            PACKAGE_PATH_old="/var/jenkins_home/package/$LOB/${PROJECT_NAME}/${ENV}" //项目改造前包目录
            PACKAGE_PATH_new="/var/jenkins_home/package/$LOB/${PROJECT_NAME}/prod" //项目改造后包目录
            ID="git rev-parse ${params.BRANCH}"
            PROJECT_NAME = "${JOB_BASE_NAME}"  // 工程名字
            GIT_ADDRESS="${params.GIT}" //GIT地址
            SAVE_FILE_NUM=3 //保留历史质品数量,实际保留2天
        }
        stages {
            stage('检出代码'){
                steps {
                    git(
                        url: "${GIT_ADDRESS}",
                        credentialsId: '23477e7c-edd5-48a1-a0e4-acfb57c55687',
                        branch: "${params.BRANCH}"
                    )
                }
             }
            stage('带参编译打包'){
                when {
                not { environment name: 'STATUS',value: '改造后' }
                }
                agent {
                    docker {
                        image 'maven:3.5.3'
                        args '-v /root/.m2:/root/.m2'
                 }
                }
                steps {
                    sh '''
                        cd ${WORKSPACE}
                        if [ ! -d ${PACKAGE_PATH_old} ];then
                            mkdir -p ${PACKAGE_PATH_old}
                        fi
                        if [ ! -f ${PACKAGE_PATH_old}/${PROJECT_NAME}_`${ID}`.${postfix} ];then
                            mvn clean package -U -Dmaven.test.skip=true -Dmaven.compile.fork=true  -P${ENV}
                           
                        else
                            echo "file exist"
                        fi
                    '''
                    }
                }
    
            
            stage('不带参编译打包') {
                when { environment name: 'STATUS',value: '改造后' }
                agent {
                    docker {
                        image 'maven:3.5.3'
                        args '-v /root/.m2:/root/.m2'  
            }
                }
                steps {
                    sh '''
                    cd ${WORKSPACE}
                    if [ ! -d ${PACKAGE_PATH_new} ];then
                        mkdir -p ${PACKAGE_PATH_new}
                    fi
                    if [ ! -f ${PACKAGE_PATH_new}/${PROJECT_NAME}_`${ID}`.${postfix} ];then
                        mvn clean package -U -Dmaven.test.skip=true -Dmaven.compile.fork=true
                    else
                        echo "file exist"
                    fi
                    '''
                   }
                 }
                 
             stage ('改造前 分发仓库'){
                when {
                not { environment name: 'STATUS',value: '改造后' }
                }
                steps {
                    sh '''
                        if [ ! -f ${PACKAGE_PATH_old}/${PROJECT_NAME}_`${ID}`.${postfix} ];then
                            ls -t ${PACKAGE_PATH_old} | tail -n +${SAVE_FILE_NUM} | xargs rm -f
                            cp -rf ${WORKSPACE}/${TARGET_FILE} ${PACKAGE_PATH_old}/${PROJECT_NAME}_`${ID}`.${postfix}
                        else
                            echo "file exits"
                        fi
                    '''
                }
            }
    
            stage ('改造后 分发仓库'){
                when { environment name: 'STATUS',value: '改造后' }
                steps {
                    sh '''
                        if [ ! -f ${PACKAGE_PATH_new}/${PROJECT_NAME}_`${ID}`.${postfix} ];then
                            ls -t ${PACKAGE_PATH_new} | tail -n +${SAVE_FILE_NUM} | xargs rm -f
                            cp -rf ${WORKSPACE}/${TARGET_FILE} ${PACKAGE_PATH_new}/${PROJECT_NAME}_`${ID}`.${postfix}
                        else
                            echo "file exits"
                        fi
                    '''
                }
            }
            
            stage('改造前环境发布'){
                when {
                  allOf {
                    not {environment name: 'ENV',value: 'prod'}
                    not {environment name: 'STATUS',value: '改造后'}
                        }
                      }
                steps {
                  sh '''
                    /usr/bin/ansible-playbook -i /app/ansible/hosts /app/ansible/deploy.yml  -e "env=${ENV} lob=${LOB}
                    groupname=${PROJECT_NAME} id=`${ID}`"  -e"@/app/ansible/group_vars/${PROJECT_NAME}"
                    '''
                    }
                  }
            stage('改造后环境发布'){
                when {
                  allOf {
                   environment name: 'STATUS',value: '改造后'
                   not {environment name: 'ENV',value: 'prod'}
                         }
                      }
                steps {
                  sh '''
                    ansible-playbook -i /app/ansible/hosts /app/ansible/deploy.yml  -e "env=${ENV} lob=${LOB} groupname=${PROJECT_NAME}
                    id=`${ID}` remote_path=http://192.168.13.9:81/jenkins/${LOB}/${PROJECT_NAME}/prod"  -e"@/app/ansible/group_vars/${PROJECT_NAME}"
                    '''
                    }
                  }
           }
      }
    pipeline show
  • 相关阅读:
    准备试用一下PHPUnit
    php dump 当前所有局部变量
    利用JNI动态链接库实现Java调用Jerasure库
    CentOS 5.5下配置新的Java环境
    Eclipse安装SVN插件
    hadoop0.20.2 Eclipse下编译过程
    学习ant——Java的Build工具
    CentOS5.5下安装MySQL 5.5全过程
    转载:Hadoop0.20.2集群的安装配置
    Linux 下使用Java连接MySQL数据库,并且实现插入、删除、选择操作
  • 原文地址:https://www.cnblogs.com/Chen-PY/p/11207708.html
Copyright © 2020-2023  润新知