jenkisn Pipeline的流水线发布,自动化部署
2024-10-07 04:09:17
创建一个流水线job,这只是个简单的流水线发布教程,写的不好~
创建好后进入改job设置
你可以在参数化构建中加入这些需要提前设定的参数,以自己的Jenkinsfile需要做添加
然后我们看下Jenkins-a的内容
node {
def JAVA_HOME = tool 'jdk' #定义个局部变量,设置jdk环境
env.PATH = "${JAVA_HOME}/bin:${env.PATH}"
stage('拉取代码') {
#检出代码的命令可以用上面的生成器自己生成
checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, credentialsId: '', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'svn.jsc.com']], quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']])
}
stage('构建') {
if ("${Status}"== 'Deploy') {
sh "/usr/local/maven/bin/mvn clean install -pl $module -am -U -Dmaven.test.skip=true"
echo '需要构建'
} else {
echo '不需要构建'
}
}
def web_name = "${JOB_NAME}"
stage('Status判断') {
if ("${Status}"== 'Deploy') {
jar_file = sh (
script: 'find $WORKSPACE/$module/target -name *.war',
returnStdout: true
).trim()
sh 'mkdir -p $WORKSPACE/bak/$BUILD_ID'
sh "(cp -a '${jar_file}' $WORKSPACE/bak/$BUILD_ID)"
echo '部署'
} else {
jar_file = sh (
script: 'find $WORKSPACE/bak/$Rollback_tag -name *.war',
returnStdout: true
).trim()
echo '回滚'
}
}
war_file_name = sh (
script: "(basename '${jar_file}')",
returnStdout: true
).trim()
config_file_name = sh (
script: 'basename ${config_file}',
returnStdout: true
).trim()
old_BUILD_NUMBER = sh (
script: "(awk 'BEGIN{print '${BUILD_NUMBER}' - 1 }')",
returnStdout: true
).trim()
stage('打印部署参数') {
#这些参数都后面ansible发布需要用的,不一定适合你
echo "jar_file: ${jar_file}"
echo "war_file_name: ${war_file_name}"
echo "config_file: ${config_file}"
echo "config_file_name: ${config_file_name}"
echo "job_name: ${web_name}"
echo "old_BUILD_NUMBER: ${old_BUILD_NUMBER}"
}
stage('部署') {
#这里你可以用ansible部署到机器上,或者用其他什么的,下面只做个示范照抄无效
sh "/usr/bin/ansible-playbook /etc/ansible/playbook/deploy_test.yaml -f 5 -e jar_file=${jar_file} -e config_file_name=${config_file_name} -e host=${host} "
}
}
最后的效果
最新文章
- asp.net dataset 判断是否为空 ?
- SPI机制
- ie上如何兼容placeholder
- C中头文件在cpp文件中引用和.h文件引用
- video和audio
- unbuntu server (linux系统)下面安装 lamp
- Unix系统中,两个进程间的通信
- HDU 4638-Group(线段树+离线处理)
- 如何用DELPHI编程修改外部EXE文件的版本信
- NOIP2004 合唱队列
- bzoj 4034 [HAOI2015] T2(树链剖分,线段树)
- [T-SQL]从变量与数据类型说起
- iOS支付 IPAPayment demo iTunes Conection里面添加测试帐号,添加商品,实现购买过程
- JavaScript一个类继承中实现
- ORACLE ORDER BY用法总结
- jenkins IOS- ad-hoc 打包
- 201521123056 《Java程序设计》第7周学习总结
- ABP官方文档翻译 6.7 CSRF/XSRF保护
- zookeeper 事务日志
- Android Call requires API level 19 (current min is 15)