1-jenkins流水线相关案例

第一个案例

这个脚本包括从Git仓库拉取代码、进行Maven构建,并将构建好的jar包复制到指定服务器。

pipeline {agent anystages {stage('Prepare') {steps {script {// 判断是否存在目录,没有则克隆,有则拉取if (!fileExists('supervise-cloud')) {echo "Cloning repository"sh 'git clone ssh://git@192.168.0.99:9981/zhjg/zhengke/supervise-cloud.git'} else {echo "Pulling latest changes"sh '''cd supervise-cloudgit pull'''}}}}stage('Build') {steps {echo "Maven build start"sh '''export MAVEN_HOME=/root/apache-maven-3.9.2export JAVA_HOME=/usr/local/java/jdk-1.8.0export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHcd supervise-cloudmvn clean compile package -Dmaven.test.skip=true'''}}stage('Deploy') {steps {echo "Deploying artifacts"sh '''scp supervise-cloud/supervise-auth/target/supervise-auth.jar root@192.168.0.106:/rootscp supervise-cloud/supervise-other-module/target/*.jar root@192.168.0.106:/root'''}}}
}

详细说明:

  1. Prepare 阶段:这个阶段会检查本地是否已经存在项目目录。如果不存在,则执行 git clone 克隆仓库;如果存在,则执行 git pull 拉取最新代码。
  2. Build 阶段:设置环境变量并进入项目目录,使用 Maven 进行构建。这里跳过了测试并且指定了项目和pom文件位置。
  3. Deploy 阶段:使用 scp 命令将构建好的 jar 包复制到远程服务器上。这里需要确保 Jenkins 服务器有权限访问目标服务器,并且ssh密钥已正确设置。

第二个案例

需要在Jenkins流水线中停止supervise-gateway.jar应用,可以通过设置一个专门的停止阶段来实现。这个阶段将会使用kill命令或其他方式来停止正在运行的Java进程。

Jenkinsfile 示例

假设应用是通过一个Java命令启动的,并且知道这个应用相关的一些信息(如使用的jar文件名),你可以在Jenkins流水线中这样写:

pipeline {agent anystages {stage('Stop Application') {steps {script {// 查找正在运行的Java应用的PIDsh '''PID=$(ps aux | grep '[s]upervise-gateway.jar' | awk '{print $2}')if [ -z "$PID" ]; thenecho "No application running."elseecho "Stopping application with PID: $PID"kill $PID# 确认进程是否已经停止while kill -0 $PID 2> /dev/null; do echo "Waiting for application to stop..."sleep 1doneecho "Application stopped."fi'''}}}}
}

这个流水线脚本做了以下几件事:

  1. 查找Java进程:使用psgrep命令查找包含supervise-gateway.jar的Java进程。这里使用[s]upervise-gateway.jar的搜索模式是为了避免匹配grep命令自己的进程。

  2. 停止进程:使用kill命令发送终止信号到找到的进程ID。如果找到多个进程,这个脚本将会停止第一个找到的进程。

  3. 确认停止:脚本会检查进程是否停止,如果没有停止,它会每秒检查一次直到进程停止。

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

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

相关文章

llama.cpp制作GGUF文件及使用

llama.cpp的介绍 llama.cpp是一个开源项目,由Georgi Gerganov开发,旨在提供一个高性能的推理工具,专为在各种硬件平台上运行大型语言模型(LLMs)而设计。这个项目的重点在于优化推理过程中的性能问题,特别是…

MultiBooth:文本驱动的多概念图像生成技术

在人工智能的领域,将文本描述转换为图像的技术正变得越来越先进。最近,一个由清华大学和Meta Reality Labs的研究人员组成的团队,提出了一种名为MultiBooth的新方法,它能够根据用户的文本提示,生成包含多个定制概念的图…

基于大语言模型的Agent的探索与实践

AI代理是人工智能领域的核心概念之一,它指的是能够在环境中感知、做出决策并采取行动的计算实体。代理可以是简单的,如自动化的网页爬虫,也可以是复杂的,如能够进行战略规划和学习的自主机器人。 AI代理的概念最早源于哲学探讨&am…

python:画折线图

import pandas as pd import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties# 设置新宋体字体的路径 font_path D:/reportlab/simsun/simsun.ttf# 加载新宋体字体 prop FontProperties(fnamefont_path)""" # 读取 xlsx 文件 d…

哈希查找(Hashing Search)

哈希查找(Hashing Search)是一种在特定数据结构——哈希表(Hash Table)中查找特定元素的高效算法。哈希表通过哈希函数(Hash Function)将输入的关键字映射到一个固定大小的地址区间(通常为数组索…

ESP-WROOM-32配置Arduino IDE开发环境

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、下载Arduino IDE二、安装工具集三、测试样例1.选则开发板2.连接开发板3.示例程序 四、使用官方示例程序总结 前言 之前用了很多注入STM32、树莓派Pico和Ar…

探索Java的未来

目录 一、云计算与大数据 二、人工智能与机器学习 三、物联网与边缘计算 四、安全性与性能优化 五、社区与生态 Java,作为一种广泛使用的编程语言,自其诞生以来就以其跨平台性、面向对象特性和丰富的库资源赢得了开发者的青睐。然而,随着…

【漏洞复现】Apahce HTTPd 2.4.49(CVE-2021-41773)路径穿越漏洞

简介: Apache HTTP Server是一个开源、跨平台的Web服务器,它在全球范围内被广泛使用。2021年10月5日,Apache发布更新公告,修复了Apache HTTP Server2.4.49中的一个路径遍历和文件泄露漏洞(CVE-2021-41773)。…

[AI OpenAI-doc] Prompt工程

这个指南分享了从大型语言模型(有时称为GPT模型)如GPT-4 中获得更好结果的策略和技巧。这里描述的方法有时可以结合使用以达到更好的效果。我们鼓励进行实验,找到最适合您的方法。 这里演示的一些示例目前仅适用于我们最强大的模型gpt-4。一…

报错(已解决):无法加载文件 D:\code\NodeJs\pnpm.ps1,因为在此系统上禁止运行脚本。

问题: 在vscode运行uniapp项目需要拉取全部依赖,需要使用到pnpm,在vscode终端运行命令:pnpm install后报错: 解决办法: 1:我未安装pnpm,首先打开电脑cmd,运行下列命令&a…

锂电池恒流恒压CCCV充电模型MATLAB仿真

微❤关注“电气仔推送”获得资料(专享优惠) CCCV简介 CCCV充电过程是恒流充电(CC)和恒压充电(CV)的结合。在CC阶段对电池施加恒定电流,以获得更快的充电速度,此时电池电压持续升高…

现货黄金今日行情分析:昨日高低点法

进行交易之前,投资者要对现货黄金今日行情进行一波分析,我们交易决策应该建立在合理分析的基础之上。那么打开市场交易软件看到现货黄金今日行情之后,该如何着手进行分析呢?下面我们就来讨论一下具体的方法。 要进行现货黄金今日行…

MATLAB 点云随机赋色 (68)

MATLAB 点云随机赋色 (68) 一、算法介绍二、算法介绍1.代码2.结果三、数据链接一、算法介绍 读取的点云本身带有颜色信息,有时我们需要为每个点随机赋予一种颜色,下面是具体效果和实现代码,以及使用的数据: 二、算法介绍 1.代码 代码如下(示例): % 读取点云文件 f…

Nacos Docker 快速部署----解决nacos鉴权漏洞问题

Nacos Docker 快速部署 1. 说明 1.1 官方文档 官方地址 https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html docker启动文件的gitlhub地址 https://github.com/nacos-group/nacos-docker.git 问题: 缺少部分必要配置与说明 1.2 部署最新版本Nacos&…

位图与布隆过滤器深度剖析

位图与布隆过滤器深度剖析 目录 位图与布隆过滤器深度剖析 一、位图 (Bitmap) 二、布隆过滤器 (Bloom Filter) 三、 结合位图与布隆过滤器的最佳实践 在处理大数据和进行高性能查找时,传统的数据结构如数组、链表等可能无法满足效率和空间上的需求。位图和布隆…

知识图谱与大语言模型的协同(RAG)——MindMap

MindMap : Knowledge Graph Prompting Sparks Graph of Thoughts in Large Language Models 论文地址: https://arxiv.org/abs/2308.09729 代码:https://github.com/wylwilling/MindMap 1.概述 大型语言模型(LLMs)在处理新信息、防止生成幻觉内容、以及增强决策过程透明度…

mysql: docker 异常 - mbind: Operation not permitted

mbind: Operation not permitted 前言:正文:结论 : 前言: 用数据库处理平台问题今天报错,mbind: Operation not permitted。 mbind 不允许操作,一头雾水这是什么意思。 网上找了很多资料大概意思是: 这个错…

《21天学通C++》(第二十章)STL映射类(map和multimap)

为什么需要map和multimap: 1.查找高效: 映射类允许通过键快速查找对应的值,这对于需要频繁查找特定元素的场景非常适合。 2.自动排序: 会自动根据键的顺序对元素进行排序 3.多级映射: 映射类可以嵌套使用,创…

第22天 数据库

数据库存储位置 1.基于存储位置 1.1 基于磁盘存储 :IO保证数据的持久化。比如MySQL。性能低 1.2基于缓存存储 :数据存储在内存中,可能会丢失一些数据。性能高,比如Redis 2.基于关系划分 2.1 关系型数据库 :mysql ora…

RabbiMQ-消息可靠性

RabbiMQ消息可靠性 生产者可靠性 生产者重试机制 问题:生产者发送消息时,出现了网络故障,导致与MQ的连接中断 解决: spring:rabbitmq:connection-timeout: 1s # 设置MQ的连接超时时间template:retry:enabled: true # 开启超时…