gbless 发表于 2018-1-9 21:10:51

jenkins-pipeline 自动部署后端的测试环境

pipeline{  //参数
  parameters{
  string(name:'Agent_47',defaultValue:'TEST_2',description:'目标节点服务器')
  string(name:'Node_GitUrl',defaultValue:'/home/Node_Git',description:'目标节点服务器的工作空间路径')
  string(name:'Pro_URL',defaultValue:'/home/pro',description:'目标节点服务器的项目部署环境路径')
  string(name:'Cred_ID',defaultValue:'3619798a-5cf2-4f0b-b9b1-4320faf7c4f7',description:'节点服务器和git服务器之间的凭证')
  string(name:'GitHub_Addr',defaultValue:'ssh://XXXX@git.wowocai.com:29418/SQA/Automation/XXX/CRM',description:'git仓库地址')
  string(name:'MAS',defaultValue:'master',description:'git仓库分支标识')
  string(name:'Pro_Name',defaultValue:'XXX_crm',description:'项目ID')
  string(name:'Tomcat_Start',defaultValue:'/usr/data/XXX_crm/bin/startup.sh',description:'项目的tomcat启动文件')
  string(name:'Build_Result',defaultValue:'构建失败,\n构建成功',description:'构建结果')
  string(name:'Email_Reception',defaultValue:'XXXXX@qq.com',description:'邮件接收人')
  }
  //执行者||工作区间,执行路径:Node_GitUrl
  agent{
  node{
  label params.Agent_47
  customWorkspace params.Node_GitUrl
  }
  }
  //options{
  //整个项目的执行时间是0.1小时
  //timeout(time:0.1,unit:'HOURS')
  //项目执行失败,重试3次,3次后再失败则宣告失败
  //    retry(3)
  
//    }
  //为每个阶段(stage)建设自己的执行者或者工作区间|节点
  stages{
  stage('参数初始化'){
  steps{
  script{
  def BUILD=params.Build_Result.split(",")
  build_faild = BUILD
  build_success = BUILD
  }
  }
  }
  stage('清除工作空间'){
  //steps最小执行单元,cleanWs():清除工作空间
  steps{
  cleanWs()
  }
  }
  stage('代码获取'){
  steps{
  git credentialsId:params.Cred_ID,
  url:params.GitHub_Addr,
  branch:params.MAS
  }
  }
  stage('清楚FSDK项目的CRM所有文件'){
  steps{
  sh "rm -rf ${params.Pro_URL}/${params.Pro_Name}*"
  }
  }
  stage('推送最近拉取的FSDK项目的CRM所有文件'){
  steps{
  sh "mv ${params.Pro_Name} ${params.Pro_URL}"
  }
  }
  stage("环境部署"){
  steps{
  //判断fsdk_crm的进程是否存在,如果不存在则重新启动,如果存在则kill掉该进程,然后重新启动
  sh '''count=`ps -ef |grep fsdk_crm|grep -v "grep" |cut -c 9-15`
  if [ $? -eq 0 ]
  then
  /usr/data/fsdk_crm/bin/startup.sh
  sleep 30
  else
  `kill -9 $count`
  /usr/data/fsdk_crm/bin/startup.sh
  sleep 30
  fi'''
  // sh "ps -ef|grep fsdk_crm|grep -v grep|cut -c 9-15|xargs kill -9"
  }
  }
  }
  post{
  failure{
  echo "构建失败"
  emailext body: '''**************************************<br>
  XXX测试环境 ${build_faild}
  <br>
  **************************************<br>''',
  subject: 'Test',
  to:params.Email_Reception
  }
  success{
  echo "构建成功"
  emailext body: '''**************************************<br>
  ${build_success}
  XXX测试环境已提测部署<br>
  **************************************<br>''',
  subject: 'Test',
  to:params.Email_Reception
  }
  }
  
}
  
页: [1]
查看完整版本: jenkins-pipeline 自动部署后端的测试环境