#!/usr/bin/env groovy
pipeline{
    agent any
  environment {
    REVISION = "OperationCenterPlatform.${env.BUILD_ID}"
	project_name = "ocp-web"
	project_version = "0.0.1-SNAPSHOT"	
	git_project_branch="master"
	git_project_commitID1 = sh returnStdout: true ,script: "git rev-parse --short HEAD"
	//去掉空格
	git_project_commitID = git_project_commitID1.trim()
	git_url="git@xxxx"
	Recipient="xxxx"
	project_path="${params.project_path}"
	project_port="${params.project_port}"
	git_branch="${params.git_branch}"
	//传给xhell脚本,作为tomcat名字的一部分
	git_branch_name_temp=git_branch.replace("origin/","")
	// 去掉空格
	git_branch_name = git_branch_name_temp.trim() 
	project_num="${params.project_num}"
  }
    options{
        disableConcurrentBuilds()
        skipDefaultCheckout()
        timeout(time: 1, unit: 'HOURS')
        timestamps()
    }
    parameters{
        choice(name: 'build_env', choices: '开发环境\n测试环境\n生产环境\n', description: '请选择构建的环境')
    }
    stages{
        stage ('Initialize') {

          steps {
        script {
          currentBuild.displayName = "${REVISION}"
        }
              sh '''
              echo "任务初始化..."
              echo "构建版本revision:${REVISION}"
              '''
              sh '''
              echo "项目检出...."
              '''
			
             git url: "${git_url}"
             sh 'git checkout "${git_branch}"'


          }
        }

    stage ('Build') {

      steps {
        echo "您选择了:${params.build_env}"
        echo '构建阶段....'
        sh "'${MAVEN_HOME}/bin/mvn'   -Dmaven.test.failure.ignore clean install  -f OperationCenterPlatform/pom.xml"
      }
    }
    stage ('Deploy') {
      steps {
      echo '发布阶段....'

       script
            {
              if (params.build_env == '测试环境') {
                  echo '=====》》》测试环境进行远程发布。'
				sh '''
					ssh apps_dev@xxx "cd /home/yunovo; sh createdir_springboot.sh ${project_name};"
					scp  OperationCenterPlatform/${project_name}/target/${project_name}-${project_version}.jar  apps_dev@xxx:/home/yunovo/wars/${project_name} 
					ssh root@xxx " su - apps_dev; cd /home/yunovo; sh start_springboot_ocp.sh  ${project_path}  ${project_port}    ${project_name}  ${git_branch_name} ${git_project_commitID}  ${project_version} ${project_num};"
				   ''' 
				
              }else if(params.build_env=='生产环境'){
                    echo '=====》》》生产环境进行远程发布。'
				sh '''	
					ssh yunovo@10.0.3.51 "cd /home/yunovo; sh p_createdir.sh ${project_name}"
					scp  OperationCenterPlatform/${project_name}/target/${project_name}-${project_version}.jar  yunovo@xxx:/home/yunovo/repos/${project_name}/${project_name}-${project_version}.${git_branch_name}.${git_project_commitID}.jar
			    '''	
					
              }
              else {
                  echo '=====》》》 默认(开发)环境进行远程发布。'
				sh '''
					ssh apps_dev@xxx "cd /home/yunovo; sh createdir_springboot.sh ${project_name};"
					scp  OperationCenterPlatform/${project_name}/target/${project_name}-${project_version}.jar  apps_dev@xxx:/home/yunovo/wars/${project_name} 
					ssh root@xxx " su - apps_dev; cd /home/yunovo; sh start_springboot_ocp.sh  ${project_path}  ${project_port}    ${project_name}  ${git_branch_name} ${git_project_commitID}  ${project_version} ${project_num};"
				   ''' 
    
              }

              }
      }
    }

    }

post {
        always {
            echo '构建结束...'
        }
        success {
            echo '恭喜您,构建成功!!!'
			
		mail subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 执行成功",
		  body: """
<div id="content">
  <h1>CI报告</h1>
  <div id="sum2">
      <h2>Jenkins 运行结果</h2>
      <ul>
      <li>Job URL : <a href='${env.BUILD_URL}'>${env.BUILD_URL}</a></li>
	  <li>jenkins的执行结果 : <a>jenkins 执行成功</a></li>
	  <li>jenkins的Job名称 : <a id="url_1">${env.JOB_NAME} [${env.BUILD_NUMBER}]</a></li>
	  <li>jenkins的URL : <a href='${env.BUILD_URL}'>${env.BUILD_URL}</a></li>
	  <li>jenkins项目名称 : <a>${env.JOB_NAME}</a></li>
      </ul>
  </div>
  <div id="sum0">
  <h2>GIT 信息</h2>
  <ul>
	<li>GIT项目的地址 : <a>${git_url}</a></li>
	<li>GIT项目当前的分支名 : ${git_branch}</li>
	<li>GIT最后一次提交的commitID : ${git_project_commitID}</li>
  </ul>
  </div>
    <div id="sum0">
  <h2>运行环境</h2>
  <ul>
	<li>项目发布的环境:  ${params.build_env}</li>
	<li>项目环境访问地址: ${params.mail_project_url} </li>
	<li>项目运行环境的IP : ${params.mail_project_ip}</li>
	<li>项目运行环境的jar路径 : ${params.project_path}</li>
	<li>项目的运行包的名称: ${project_name}-${project_version}.${git_branch_name}.${git_project_commitID}.jar</li>
  </ul>
  </div>
  </div>
		  
		  
                """,
        charset: 'utf-8',
        from: 'yunovo@yunovo.cn',
        mimeType: 'text/html',
        to: 'zhangchuan@yunovo.cn'
	    //to : "${Recipient}"
        }
        failure {
            echo '抱歉,构建失败!!!'
			
		mail subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 执行失败",
		  body: """

<div id="content">
  <h1>CI报告</h1>
  <div id="sum2">
      <h2>Jenkins 运行结果</h2>
      <ul>
      <li>Job URL : <a href='${env.BUILD_URL}'>${env.BUILD_URL}</a></li>
	  <li>jenkins的执行结果 : <a>jenkins 执行失败</a></li>
	  <li>jenkins的Job名称 : <a id="url_1">${env.JOB_NAME} [${env.BUILD_NUMBER}]</a></li>
	  <li>jenkins的URL : <a href='${env.BUILD_URL}'>${env.BUILD_URL}</a></li>
	  <li>jenkins项目名称 : <a>${env.JOB_NAME}</a></li>
      </ul>
  </div>
  <div id="sum0">
  <h2>GIT 信息</h2>
  <ul>
	<li>GIT项目的地址 : <a>${git_url}</a></li>
	<li>GIT项目当前的分支名 : ${git_branch}</li>
	<li>GIT最后一次提交的commitID : ${git_project_commitID}</li>
  </ul>
  </div>
  </div>
		  
             """,
        charset: 'utf-8',
        from: 'yunovo@yunovo.cn',
        mimeType: 'text/html',
        //to : "${Recipient}"		
		to: 'zhangchuan@yunovo.cn'
        }
        unstable {
            echo '该任务已经被标记为不稳定任务....'
        }
        changed {
            echo ''
        }
    }

}

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐