一般java maven项目的jenkins发布pipeline流水线分享

编程入门 行业动态 更新时间:2024-10-09 07:18:12

一般java maven项目的jenkins发布pipeline<a href=https://www.elefans.com/category/jswz/34/1760068.html style=流水线分享"/>

一般java maven项目的jenkins发布pipeline流水线分享

一般业务cicd一直基于jenkins来实现这里来分享一篇关于maven项目的流水线构建分享。业务代码是在gitlab上,下面是自动构建-编译-部署的全过程
编译完成jar包放置在自己搭建nginxweb服务器上。
直接上pipeline代码

pipeline {agent { label 'master'}
environment { //改成你的git 凭证gitsec='xxx'  //#改成你的git地址giturl='xxx'  propath='$PWD'//#是否执行清除is_clear='true'  // #是否执行scmis_check='true'//#是否执行编译is_build='true' // #是否规定jar包到web服务器is_archivejar='true' //#是否部署。。。。钉钉消息通知这里没有加上,需要的我给你发is_deploy='true'  // #jar包归档目录archivedir='/data/nginx/jar/all'  / /#远程ssh启动脚本目录 ,这个脚本很关键。是放置在节点上的。需要的话我发你restartsh='/data/jar/jardeploy.sh' //hosts='node'   这个变量在单节点启用,有时候我们的模块jar包分散在不同的服务器上,这个一个远程节点就有点不适用了//这是jar包的版本,取ssh  的date来做JARVERSION = "${sh(returnStdout: true, script: 'date +\'%Y%m%d%H%M%S\'').trim()}"}tools{maven "obt"
}parameters {
//这里添加两个参数,一个是git分支参数,这里需要改下你的defaultValue和
//useRepository的值gitParameter(branchFilter: 'origin.*/(.*)', defaultValue: 'test', name: 'CODEBRANCH', type: 'PT_BRANCH', useRepository: '.*xxx.git')//一个是需要部署的模块名称,模块名字最好被你target的jar包包含,//比如模块是xxx  编译出来的jar包最好是xxx.jar或者xxx-1.0.0.jar 这里需要你修改defaultValue和valueextendedChoice defaultValue: 'xxx', description: '选择部署模块', multiSelectDelimiter: ',', name: 'modulesname', quoteValue: false, saveJSONParameterToFile: false, type: 'PT_CHECKBOX', value: 'module1,module2,module3', visibleItemCount: 5}
stages {stage('gitbranch') {steps {git credentialsId: gitsec ,branch: CODEBRANCH , url: giturl}}stage(clean){when { environment name: 'is_clear', value: 'true' }steps {cleanWs()}}stage('printenv') {steps {script{sh 'printenv'}}}stage('check') {when { environment name: 'is_check', value: 'true' }steps {checkout([$class: 'GitSCM', branches: [[name: CODEBRANCH]], extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]], userRemoteConfigs: [[credentialsId: gitsec, url: giturl ]]])}}stage('bulidjar') {when { environment name: 'is_build', value: 'true' }steps {sh """mvn clean package """}}stage('archivejar') {when { environment name: 'is_archivejar', value: 'true' }steps {sh "mkdir -p $archivedir/$JARVERSION"script{def server = env.modulesname.split(',')for (i in server){sh   """find $WORKSPACE -name "${i}*jar"|xargs -i cp {} $archivedir/$JARVERSION"""if (env.msg){env.msg=env.msg+"sh ${restartsh} ${i} ${JARVERSION} \n"}else{env.msg="${modulesname}服务发版 \nsh ${restartsh} ${i}  ${JARVERSION} \n"}}}echo "$msg"}}stage('deploy') {when { environment name: 'is_deploy', value: 'true' }steps {script{//这里需要你改下你的模块和部署节点的对应关系。这个好就是env中的那个hosts参数。我这是sshkeygen免密登录的。
def modules_list=["module1":"node1","module1":"node2"]def server = env.modulesname.split(',')for (i in server){hosts = modules_list["${i}"]sh   """ssh $hosts "sh $restartsh ${i}  ${JARVERSION}""""}}}}}}

前两次运行需要加载变量。失败没有问题,等成功了差不多是这个样子,
第一个参数时分支
第二个是模块可多选

运行时候是这个样子,

更多推荐

一般java maven项目的jenkins发布pipeline流水线分享

本文发布于:2024-02-27 18:40:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765763.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:流水线   项目   maven   java   jenkins

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!