pipeline {
agent { label 'slave' } options {
timestamps()
disableConcurrentBuilds()
buildDiscarder(
logRotator(
numToKeepStr: '20',
daysToKeepStr: '30',
)
)
} parameters {
choice(
name: "DEPLOY_FLAG",
choices: ['deploy', 'rollback'],
description: "发布/回滚"
)
} /*=======================================常修改变量-start=======================================*/ environment {
gitUrl = "git地址"
branchName = "分支名称"
gitlabCredentialsId = "认证凭证"
projectRunDir = "项目运行目录"
jobName = "${env.JOB_NAME}"
serviceName = "服务名称"
serviceType = "jar"
runHosts = "192.168.167.xx,192.168.167.xx"
rollbackVersion = ""
} stages {
stage('Deploy'){
when {
expression { return params.DEPLOY_FLAG == 'deploy' }
}
stages {
stage('Pre Env') {
steps {
echo "======================================项目名称 = ${env.JOB_NAME}"
echo "======================================项目 URL = ${gitUrl}"
echo "======================================项目分支 = ${branchName}"
echo "======================================当前编译版本号 = ${env.BUILD_NUMBER}"
}
} stage('Git Clone') {
steps {
git branch: "${branchName}",
credentialsId: "${gitlabCredentialsId}",
url: "${gitUrl}"
}
} stage('Mvn Build') {
steps {
withMaven(jdk: 'jdk1.8', maven: 'maven') {
sh "mvn clean package -Dmaven.test.skip=true -U -f ${serviceName}/pom.xml"
}
}
} stage('Ansible Deploy') {
steps{
script {
sleep 5
ansiColor('xterm') {
ansiblePlaybook colorized: true, extras: '-e "directory=${projectRunDir}" -e "job=${jobName}" -e "service=${serviceName}" -e "type=${serviceType}"', installation: 'ansible', inventory: '/etc/ansible/hosts.yml', limit: "${runHosts}", playbook: '/etc/ansible/playbook/deploy-jenkins.yml'
}
}
}
}
}
} stage('Rollback') {
when {
expression { return params.DEPLOY_FLAG == 'rollback' }
}
steps{
script {
rollbackVersion = input(
message: "请填写要回滚的版本",
parameters: [
string(name:'last_number')
]
)
withEnv(["rollbackVersion=${rollbackVersion}"]){
sh '''
echo "正在回滚至就近第${rollbackVersion}个版本"
ansible ${runHosts} -m shell -a "sh ${projectRunDir}/rollback.sh ${rollbackVersion} ${serviceName}"
'''
}
}
}
}
}
post {
always {
deleteDir()
}
success {
echo 'This task is successful!'
}
}
}

最新文章

  1. 不直接登录SharePoint服务器,通过远程直接部署WSP解决方案包
  2. Revit中如何将视图过滤器传递到其它项目
  3. ASP.NET MVC5利用EF,反向自动生成数据库
  4. RouterOS软路由设置固定IP+PPPOE
  5. python核心编程学习记录之基础知识
  6. 收藏本网站兼容火狐IE
  7. 上海9000辆出租车上铺设免费微信连WiFi
  8. spring exception--No unique bean of type
  9. asp.net -mvc框架复习(4)-ASP.NET MVC中的约定规则
  10. 隐藏C语言黑窗口
  11. Caffe源码理解1:Blob存储结构与设计
  12. python正则表达式(一)
  13. 红米3 TWRP-3.2.1-0(android_7.1.2_r29) 刷8.1不提示错误 刷MIUI不再卡屏 修复无系统重启问题 更新于20180316
  14. 锻造(forging)
  15. 小程序页面传值e.currentTarget
  16. [luogu2590][bzoj1036][ZJOI2008]树的统计
  17. Scrapy爬虫学习笔记 - 爬虫基础知识
  18. VC2012+QT新建一个控制台程序
  19. _ZSkill_快捷键_Xcode快捷键
  20. 阿里巴巴java手册示例

热门文章

  1. oracle基础:怎样把查询的null转换为0、打印、定义变量
  2. Prometheus+Grafana监控Kubernetes
  3. R数据分析:生存分析与有竞争事件的生存分析的做法和解释
  4. 2014年3月5日C#训练
  5. jvm的小练习
  6. CF1463E Plan of Lectures
  7. Pólya 定理学习笔记
  8. 洛谷 P5902 [IOI2009]salesman(dp)
  9. 【GS文献】植物育种中基因组选择的方法、模型及展望
  10. [R]在dplyr基础上编写函数-(2)substitute和quote