jenkinsfile example

// 需要插件 Pipeline  Pipeline-Maven  Pipeline-Utility-Steps  git
def createVersion() {
   // 定义一个版本号作为当次构建的版本,输出结果 20191210175842_69
    // return new Date().format('yyyyMMddHHmmss') + "_${env.BUILD_ID}"
    return new Date().format('yyyyMMdd') + "_${env.BUILD_ID}"
   
}

pipeline {
   agent any

   environment {
      GIT_CREDS = credentials('e32346ef-255b-407a-9425-84a358e594c6')  //定义git密码
      git_branch = 'feature/devops-wj'   //git 分支号

      service_v = readMavenPom().getVersion()  // 获取maven版本号
      buildTime = createVersion()  //获取时间戳

      imageurl = "my.harbor.com/"   //定义镜像url
      deployenv = 'dev'  //部署环境
      servicename = "gittest"    //定义服务名称

      serviceport = '8080' // 服务端口号

      imagename = "${imageurl}${deployenv}/${servicename}:${service_v}_${buildTime}"   //镜像名称
     
   }
   parameters {
        // git分支选择参数,第一次使用默认分支构建,之后会出现选择分支的操作
        gitParameter branchFilter: 'origin/(.*)', defaultValue: 'dev', name: 'BRANCH', type: 'PT_BRANCH'
    }

   stages {
        stage('git colne') {
         steps {
             // 获取最新代码
             // git branch: "${git_branch}", credentialsId: 'e32346ef-255b-407a-9425-84a358e594c6',  url: 'http://gitserver/mp/gittest.git'
             git branch: "${params.BRANCH}", credentialsId: 'e32346ef-255b-407a-9425-84a358e594c6',  url: "${git_url}"  // 动态获取分支
         }
      }
      stage('maven清理并编译') {
         steps {
            //  script{
            //     IMAGE_TAG = readMavenPom().getVersion()
            // }
            withMaven(maven: 'maven3') {
                sh "mvn clean compile package -U -DskipTests=true"
            }
         }
      }
      /*
      stage('maven清理并编译') {
         steps {
             script{
                IMAGE_TAG = readMavenPom().getVersion()
            }
            // maven 编译jar包
            sh '''
            echo ${IMAGE_TAG}
            /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3/bin/mvn clean compile package -U
            '''
         }
      }*/
      stage('create dockerfile'){
          steps {
              // 动态生产dockerfile
              sh """
                echo '''FROM 192.168.1.252:8443/library/jiuqi_jdk:201
WORKDIR /home
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
COPY *-bootstrap/target/*-bootstrap-*.jar ${servicename}-bootstrap.jar
EXPOSE ${serviceport}
ENV JAVA_TOOL_OPTIONS="-Xms512m -Xmx512m -Dspring.profiles.active=${deployenv} -Dspring.cloud.nacos.server-addr=192.168.1.253:8848"
ENTRYPOINT java -jar \$JAVA_TOOL_OPTIONS ${servicename}-bootstrap.jar
                ''' > Dockerfile
              """
          }
      }
      stage('docker build and push register'){
          steps{
              script{
                 //构建镜像并推送到harbor仓库
                sh '''
                containerid=$(docker ps -a | grep ${servicename} | awk '{print $1}')
                if [ "$containerid" != "" ];then
                    docker rm -f $containerid
                fi
                imageid=$(docker images | grep ${servicename} | awk '{print $3}')
                if [ "$imageid" != "" ];then
                    docker rmi $imageid
                fi
                docker build -t ${imagename} .
                docker push ${imagename}
                '''
              }
          }
      }/*
      stage('ansible run docker container') {
          steps{
              // 运行docker run
              sh '''
              ansible-playbook /var/jenkins_home/ansible_script/deploy.yml -e "servicename=${servicename} imagename=${imagename} port=${serviceport}"
              '''
          }
      }*/
   }
   
}
posted @ 2021-11-18 18:50  蒲公英PGY  阅读(143)  评论(0编辑  收藏  举报