Jenkins配置weblogic自动发版--示例

Pipeline内容

properties([parameters([[$class: 'CascadeChoiceParameter', choiceType: 'PT_CHECKBOX', description: '选择 受管服务器', filterLength: 1, filterable: false, name: 'WLS_Targets', randomName: 'choice-parameter-173347495550024', referencedParameters: 'Action', script: [$class: 'GroovyScript', fallbackScript: [classpath: [], oldScript: '', sandbox: false, script: 'return ["Envrionment Undefined"]'], script: [classpath: [], oldScript: '', sandbox: false, script: '''if (Action.equals("Deploy")) {return ["AdminServer:selected","serverA","serverB","serverC"]
} ''']]]])])pipeline {agent anytools {maven 'MAVEN3'jdk 'JDK1.8'}environment {// 项目代码拉取svn_path = "svn://172.16.20.70/ccms-project"svn_auth_id = "cdb6584d-9f9b-4ecb-890e-a15081c0abca"appName = "ccms-test"warName = "water-test-1.0-SNAPSHOT.war"}parameters {choice choices: ['Deploy', 'Delete'], description: '选择 发布项目|删除项目', name: 'Action'extendedChoice name: 'MavenBuild', type: 'PT_RADIO', description: '发版选项: 是否进行全新的Maven构建; 删除项目不需要勾选', quoteValue: false, saveJSONParameterToFile: false, value: 'Yes,Clean', descriptionPropertyValue: '进行Maven构建并发版,清除Maven缓存全新构', visibleItemCount: 5,  multiSelectDelimiter: ',', defaultValue: 'Yes'extendedChoice name: 'WLS_Servers', type: 'PT_CHECKBOX', description: '请选择weblogic服务器', quoteValue: false, saveJSONParameterToFile: false, value: 'weblogic1,weblogic2,weblogic3,weblogic4', descriptionPropertyValue: '172.16.20.70,172.16.20.71,172.16.20.72,172.16.20.73', visibleItemCount: 10, multiSelectDelimiter: ',', defaultValue: 'weblogic1'}stages {stage('项目代码拉取') {when {anyOf {allOf {environment name: 'Action', value: 'Deploy'environment name: 'MavenBuild', value: 'Yes'}allOf {environment name: 'Action', value: 'Deploy'environment name: 'MavenBuild', value: 'Clean'}}}steps{script {if ( env.Action == "Deploy" && env.MavenBuild == "Clean" ) {deleteDir()  // clean up current workspacecheckout([$class: 'SubversionSCM', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, credentialsId: "${svn_auth_id}", depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: "${svn_path}"]], quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']])}else {checkout([$class: 'SubversionSCM', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, credentialsId: "${svn_auth_id}", depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: "${svn_path}"]], quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']])}}}}stage('项目构建') {when {anyOf {allOf {environment name: 'Action', value: 'Deploy'environment name: 'MavenBuild', value: 'Yes'}allOf {environment name: 'Action', value: 'Deploy'environment name: 'MavenBuild', value: 'Clean'}}}steps {script {if ( env.MavenBuild == "Clean" ) {sh "rm -rf /root/.m2"withMaven(jdk: 'JDK1.8', maven: 'MAVEN3') {sh '''java -versionmvn -versionmvn clean install -Dmaven.test.skip=true'''}}else {withMaven(jdk: 'JDK1.8', maven: 'MAVEN3') {sh '''java -versionmvn -versionmvn clean install -Dmaven.test.skip=true'''}}}}}stage('项目发布') {when {environment name: 'Action', value: 'Deploy'}steps {script{for (wls_server in WLS_Servers.tokenize(',')) {// for (wls_target in WLS_Targets.tokenize(',')) {// 项目发布def target_dir = "target"def target_file = "${warName}"def source_file = "${target_dir}/${target_file}"def remove_prefix = "target"def remote_dir = "version"def remote_cmd = "cd /home/weblogic/; /bin/sh ccms-deploy.sh  deploy ${appName} ${warName} ${WLS_Targets} >> version/version-deploy.log"sshPublisher(publishers: [sshPublisherDesc(configName: "${wls_server}", transfers: [sshTransfer(execCommand: "${remote_cmd}", remoteDirectory: "${remote_dir}", removePrefix: "${remove_prefix}", sourceFiles: "${source_file}")],)])// }}}}}stage('项目删除') {when {environment name: 'Action', value: 'Delete'}steps {script{for (wls_server in WLS_Servers.tokenize(',')) {// for (wls_target in WLS_Targets.tokenize(',')) {// 项目删除def target_dir = ""def target_file = ""def source_file = ""def remove_prefix = ""def remote_dir = ""def remote_cmd = "cd /home/weblogic/; /bin/sh ccms-deploy.sh  delete ${appName} >> version/version-delete.log"sshPublisher(publishers: [sshPublisherDesc(configName: "${wls_server}", transfers: [sshTransfer(execCommand: "${remote_cmd}", remoteDirectory: "${remote_dir}", removePrefix: "${remove_prefix}", sourceFiles: "${source_file}")],)])// }}}}}}
}

脚本内容

#!/bin/bash
wls_classpath=/home/weblogic/Oracle/Middleware/wlserver/server/lib/action=$1
appName=$2
warName=$3
target=$4wlsaddr="t3://172.16.20.71:7001"
wlsuser=weblogic
wlspasswd=weblogic1save_files=5deploy() {
java -cp ${wls_classpath}/weblogic.jar weblogic.Deployer -adminurl $wlsaddr -user $wlsuser -password $wlspasswd -name $appName -deploy -targets $target -source /home/weblogic/version/$warName
}delete() {
java -cp ${wls_classpath}/weblogic.jar weblogic.Deployer -adminurl $wlsaddr -user $wlsuser -password $wlspasswd -name $appName -undeploy
}cleanWar() {
cd  /home/weblogic/version
while true;
dofile_count=`ls -1t  ${warName}.*|wc -l`if [ ${file_count} -gt ${save_files} ];thenls -1t ${warName}.*|tail -1|xargs rm -felsebreak;fi
done
}
if [ "$action" == "deploy" ];thendeployif [ "$?" -eq "0" ];thencd /home/weblogic/version; mv $warName $warName.bak_$(date '+%Y%m%d%H%M')ficleanWar
elif [ "$action" == "delete" ];thendelete
fi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/386801.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt系统机制

Qt系统 Qt文件概述输入输出设备类QFileQFileInfoQt多线程Qt多线程常用API使用Qt多线程 线程安全互斥锁读写锁条件变量信号量 Qt网络QUdpSocketQNetworkDatagram设计一个UDP回显服务器QTcpServerQTcpSocketTcp版本的回显服务器HttpClient核心API Qt 音频Qt视频 Qt文件概述 ⽂件操…

【C++BFS】1020. 飞地的数量

本文涉及知识点 CBFS算法 LeetCode1020. 飞地的数量 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 gr…

【C++初阶】string类

【C初阶】string类 🥕个人主页:开敲🍉 🔥所属专栏:C🥭 🌼文章目录🌼 1. 为什么学习string类? 1.1 C语言中的字符串 1.2 实际中 2. 标准库中的string类 2.1 string类 2.…

前缀表达式(波兰式)和后缀表达式(逆波兰式)的计算方式

缀是指操作符。 1. 前缀表达式(波兰式) (1)不需用括号; (2)不用考虑运算符的优先级; (3)操作符置于操作数的前面。(如 3 2 ) 1.1 中…

《Programming from the Ground Up》阅读笔记:p75-p87

《Programming from the Ground Up》学习第4天,p75-p87总结,总计13页。 一、技术总结 1.persistent data p75, Data which is stored in files is called persistent data, because it persists in files that remain on disk even when the program …

hash表如何形成,hash函数如何计算,什么是hash冲突 如何解决 ,Golang map的底层原理及扩容机制

散列表 散列表(hash表):根据给定的关键字来计算出关键字在表中的地址的数据结构。也就是说,散列表建立了关键字和 存储地址之间的一种直接映射关系。 问题:如何建立映射管血 散列函数:一个把查找表中的关键字映射成该关键字对应…

oracle语法介绍

Oracle数据库是关系型数据库管理系统之一,其SQL语法遵循标准的SQL规范,但也有一些自己的扩展。以下是一些Oracle SQL语法的基本示例: 1.选择数据: SELECT * FROM my_table; 1.插入数据: INSERT INTO my_table (colum…

RocketMQ事务消息机制原理

RocketMQ工作流程 在RocketMQ当中,当消息的生产者将消息生产完成之后,并不会直接将生产好的消息直接投递给消费者,而是先将消息投递个中间的服务,通过这个服务来协调RocketMQ中生产者与消费者之间的消费速度。 那么生产者是如何…

【设计模式】工厂模式详解

1.简介 工厂模式是一种创建型设计模式,通过提供一个接口或抽象类来创建对象,而不是直接实例化对象。工厂模式的主要思想是将对象的创建与使用分离,使得创建对象的过程更加灵活和可扩展。 工厂模式主要包括以下角色: 抽象工厂&a…

地铁深基坑结构施工预警实时监测系统测点布设

01 基坑监测背景 随着我国城市建设的发展,基坑规模和开挖深度不断增加。在基坑开挖过程中,如何尽快的在第一时间了解基坑的变形情况,并动态评估基坑的结构安全,避免事故的发生。与其它监测方法相比,实现自动化监测、信…

gradio 之页面布局

输出组件的可交互,默认垂直排列 import gradio as gr def greet(name):return "Hello " name "!" with gr.Blocks() as demo:name gr.Textbox(label"Name")# 不可交互# output gr.Textbox(label"Output Box")# 可交互…

超声波清洗机哪个品牌比较好耐用?好用的超声波清洗机推荐

随着科技的发展,超声波清洗机已经慢慢出现在我们日常生活中了。像日常使用的小物品,如手表和首饰等,时间久了,难免会积累灰尘,滋生细菌。那么应该如何进行彻底清洁呢?超声波清洗机可以给我们答案&#xff0…

Move生态:从Aptos和Sui到Starcoin的崛起

区块链技术自诞生以来,已经经历了多个发展阶段和技术迭代。近年来,随着智能合约平台的不断演进,以Move语言为核心的生态系统逐渐崭露头角。Move语言以其安全性、灵活性和高效性吸引了大量开发者和项目方的关注。在Move生态中,Apto…

uniapp实现局域网(内网)中APP自动检测版本,弹窗提醒升级

uniapp实现局域网(内网)中APP自动检测版本,弹窗提醒升级 在开发MES系统的过程中,涉及到了平板端APP的开发,既然是移动端的应用,那么肯定需要APP版本的自动更新功能。 查阅相关资料后,在uniapp的…

【数据结构】——双链表的实现(赋源码)

双链表的概念和结构 双链表的全称叫做:带头双向循环链表 它的结构示意图如下 注意:这⾥的“带头”跟前⾯我们说的单链表的“头结点”是两个概念,实际前⾯的在单链表阶段称呼不严谨,但是为了读者们更好的理解就直接称为单链表的头…

Transformer——逐步详解架构和完整代码搭建

好久没更新博客,后面更新会勤一些。今天想聊一下Transformer,Transformer在NLP和CV领域都有着重要的价值,甚至可以看作是一个基础模型,这篇博客将通过详细代码深入解析Transformer模型总体架构图各个部分的的作用和搭建:论文链接&…

遥感领域新方向!Mamba+RS论文汇总!

本文总结了将Mamba应用至遥感领域的相关论文(14篇),涉及到的论文见文末链接,具体如下: 文章目录 1. 遥感图像处理2. 多/高光谱图像分类3. 变化检测/语义分割4. 遥感图像融合/超分辨率 1. 遥感图像处理 论文题目&#…

6.3 面向对象技术-设计模式

设计模式 创建型模式 结构型模式 行为型模式 真题

配置本地开发服务器代理请求以及登录模块开发(二)

项目初始化完成之后,准备开始进行项目的开发,首先配置好开发环境作为整个项目的基础 一、配置代理 1、config/proxy.ts配置代理 export default {// 如果需要自定义本地开发服务器 请取消注释按需调整dev: {// localhost:8000/api/** -> https://p…

第07课 Scratch入门篇:水果音乐钢琴

水果音乐钢琴 入门篇适合新手,如您已经学过,可以忽略本节课! 一、故事背景: 在一个充满创意和想象的奇妙世界里,有一架与众不同的钢琴——水果音乐钢琴。这架钢琴的键盘不是由普通的黑白键组成,而是由各种…