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.mzph.cn/pingmian/50305.shtml

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

相关文章

力扣高频SQL 50 题(基础版)第四题

文章目录 力扣高频SQL 50 题(基础版)第四题584.寻找用户推荐人题目说明思路分析实现过程准备数据实现方式结果截图 力扣高频SQL 50 题(基础版)第四题 584.寻找用户推荐人 题目说明 表: Customer -------------------- | Colu…

虚拟机配置RabbitMQ集群教程

RabbitMQ是常用的一款消息中间件,那么如何在我们虚拟机中创建其集群呢?跟着博主这篇文章让你一步到位 本篇搭建的是三台机器为一个集群!假设大家虚拟机都为初始化状态,从0开始(注意集群搭建需要CentOS8以上环境&#x…

【五】MySql8基于m2芯片arm架构Ubuntu24虚拟机安装

文章目录 1. 更新系统包列表2. 安装 MySQL APT Repository3. 更新系统包列表4. 安装 MySQL Server5. 运行安全安装脚本6. 验证 MySQL 安装7. 配置远程连接7.1 首先要确认 MySQL 配置允许远程连接:7.2 重启 MySQL 服务:7.3 检查 MySQL 用户权限&#xff1…

常见的文心一言的指令

文心一言,作为百度研发的预训练语言模型“ERNIE 3.0”的一项功能,能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。以下是一些常见的文心一言指令类型及其具体示例: 1. 查询…

详解数据结构之二叉树(二叉链,使用递归)

详解数据结构之二叉树(二叉链,使用递归实现) 二叉链 二叉链,二叉树的链式结构,其中数据域data存放节点的值,指针域left和right分别存放左孩子节点的地址、右孩子节点的地址。 typedef int BinaryTDataType; typedef struct Bin…

【Spring Framework】Spring AOP 面相切面编程

Spring AOP(Aspect-Oriented Programming,面向切面编程)是 Spring 框架的重要组成部分之一,它通过在不修改业务逻辑代码的情况下提供横切关注点的处理能力,使得代码更加简洁、模块化和易于维护。AOP 可以用来处理常见的…

ChatGPT的原理和成本

ChatGPT就是人机交互的一个底层系统,某种程度上可以类比于操作系统。在这个操作系统上,人与AI之间的交互用的是人的语言,不再是冷冰冰的机器语言,或者高级机器语言,当然,在未来的十来年内,机器语…

如何解决XSS攻击

跨站脚本攻击(Cross-Site Scripting, XSS)是一种常见的网络安全威胁,它允许攻击者将恶意脚本注入到看似可信的网站中。这些脚本可以窃取用户数据、破坏网站功能,甚至冒充用户执行操作。本文将详细介绍XSS攻击的不同类型及其防御策…

K8S 部署peometheus + grafana 监控

安装说明 如果有下载不下来的docker镜像可以私信我免费下载。 系统版本为 Centos7.9 内核版本为 6.3.5-1.el7 K8S版本为 v1.26.14 动态存储:部署文档 GitHub地址 下载yaml 文件 ## 因为我的K8S 版本比较新,我下载的是当前的最新版本,你的要…

go语言day18 reflect反射

Golang-100-Days/Day16-20(Go语言基础进阶)/day19_Go语言反射.md at master rubyhan1314/Golang-100-Days (github.com) 7-19 接口:底层实现_哔哩哔哩_bilibili 一、interface接口 接口类型内部存储了一对pair(value,Type) type interface { type *Type // 类型信…

Linux:传输层(2) -- TCP协议(2)

目录 1. 流量控制 2. 滑动窗口 3. 拥塞控制 4. 延迟应答 5. 捎带应答 6. 面向字节流 7. 粘包问题 8. TCP异常情况 1. 流量控制 接收端处理数据的速度是有限的. 如果发送端发的太快 , 导致接收端的缓冲区被打满 , 这个时候如果发送端继续发送 , 就会造成丢包, 继而引…

7月24日JavaSE学习笔记

序列化版本控制 序列化:将内存对象转换成序列(流)的过程 反序列化:将对象序列读入程序,转换成对象的方式;反序列化的对象是一个新的对象。 serialVersionUID 是一个类的序列化版本号 private static fin…

oracle 性能指标查询

查看表空间大小以及数据文件大小 select dt.TABLESPACE_NAME, concat(dt.MAX_SIZE,(MB)) total, concat(ddf.total_space,(MB)) used from dba_tablespaces dt,(SELECT tablespace_name,sum(bytes) / (1024 * 1024) total_spaceFROM dba_data_fileswhere TABLESPACE_NAME like…

dsp c6657 SYS/BIOS学习笔记

1 SYS/BIOS简介 SYS/BIOS是一种用于TI的DSP平台的嵌入式操作系统(RTOS)。 2 任务 2.1 任务调度 SYS/BIOS任务线程有0-31个优先级(默认0-15,优先级0被空闲线程使用,任务最低优先级为1,最高优先级为15&am…

使用 EJS 模板引擎的示例

使用 EJS 模板引擎的示例 EJS(Embedded JavaScript)是一种简单的模板引擎,允许你在 HTML 中嵌入 JavaScript 代码。以下是一个使用 EJS 模板引擎的完整示例,包括设置 Express.js 项目、配置 EJS 视图引擎和创建 EJS 模板文件。 …

Java | Leetcode Java题解之第264题丑数II

题目&#xff1a; 题解&#xff1a; class Solution {public int nthUglyNumber(int n) {int[] dp new int[n 1];dp[1] 1;int p2 1, p3 1, p5 1;for (int i 2; i < n; i) {int num2 dp[p2] * 2, num3 dp[p3] * 3, num5 dp[p5] * 5;dp[i] Math.min(Math.min(num2…

2024年网络安全焦点:新兴威胁与防御技术创新

概述 2024年&#xff0c;随着网络技术的发展&#xff0c;网络安全面临的威胁也在不断演变。本文将深入探讨2024年网络安全领域的最新威胁与防御技术创新&#xff0c;并分析它们对企业及个人安全的影响。 新兴威胁分析 云集中风险 随着越来越多的企业将数据和服务迁移至云端…

鸿蒙笔记--存储

这一节了解一下鸿蒙中常用存储API&#xff0c;主要有LocalStorage &#xff0c;AppStorage&#xff0c;PersistentStorage&#xff0c;LocalStorage 是一种页面级UI状态存储机制&#xff0c;主要用于在UIAbility内和页面间共享状态数据。通过使用特定的装饰器&#xff0c;Local…

昇思25天学习打卡营第20天|CV-ResNet50图像分类

打卡 目录 打卡 图像分类 ResNet网络介绍 数据集准备与加载 可视化部分数据集 残差网络构建 Building Block 结构 代码实现 Bottleneck结构 代码实现 构建ResNet50网络 代码定义 模型训练与评估 可视化模型预测 重点&#xff1a;通过网络层数加深&#xff0c;感知…

数据输入输出的概念

文章目录 数据输入输出的概念及在C语言中的实现简单的格式输入与输出用简单的printf函数输出数据用简单的scanf函数输入数据较复杂的输入输出格式控制输出数据格式控制 数据输入输出的概念及在C语言中的实现 数据的输入与输出是相对于计算机而言的。其中&#xff1a; 从计算机…