jenkins 本地发布脚本

Jenkins+基础系列15:番外篇--构建后操作无法启动jar、war包,并非Jenkins自动杀死衍生进程! 近段时间,公司项目采用java -jar 的方式直接启动项目,在调试Jenkins环境时,发现无论什么方式,都无法启动对应进程,查阅各自资料,说是因为Jenkins在构建完成后,为了不造成环境问题,会把衍生进程给自动杀死。于是查到有几种解决办法: 1、重设环境变量 BUILD_ID BUILD_ID=dontKillMe 无效 2、sh脚本中 exportBUILD_ID=dontKillMe 无效 3、临时改变 BUILD_ID值 OLD_BUILD_ID=$BUILD_ID e. 阅读详情

本文不探讨如何安装配置jdk、maven、git等环境,不探讨jenkins如何安装,该安装哪些插件等。你要知道这些,可以看看 使用Jenkins配置SpringBoot的自动化构建,讲得很详细了。

全局工具配置

如果你的jdk、maven、git环境都是正常的,并且都配置了环境变量。那么只需在【全局工具配置】中做下环境配置

Post Steps

然后新建项目,很显然,我这里通过git来管理代码。并在Post Steps配置一把如下脚本。

#export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。
export BUILD_ID=dontKillMe

#指定最后编译好的jar存放的位置 即是发布目录
www_path=/home/pec/www
#Jenkins中编译好的jar位置  即是编译目录
jar_path=/var/lib/jenkins/workspace/demo-test/target
#Jenkins中编译好的jar名称 
jar_name=demo-test-0.0.1-SNAPSHOT.jar

#获取运行编译好的进程ID,便于我们在重新部署项目的时候先杀掉以前的进程
pid=$(cat /home/pec/www/demo-test.pid)

#进入指定的编译好的jar的位置
cd  ${jar_path}
#将编译好的jar复制到最后指定的位置
cp  ${jar_path}/${jar_name} ${www_path}
#进入最后指定存放jar的位置
cd  ${www_path}

if ${pid}; then  #判断进程号id是否存在
    echo "pid is null"
else
    kill -9 ${pid}  #杀掉以前可能启动的项目进程
fi    #if结束标志

#启动jar,指定SpringBoot的profiles为dev,后台启动
#java -jar -Dspring.profiles.active=dev ${jar_name} &
#启动jar,后台执行
java -jar ${jar_name} &

#将进程ID存入到demo-test.pid文件中
echo $! > /home/pec/www/demo-test.pid

这个脚本的意思是当jenkins编译完成,将编译的jar文件复制到copy目录/home/pec/www/下,执行jar包文件,并记录进程id。
实际上,编译的过程是jenkins通过pom.xml以及maven插件的配合做得。之前配置的maven环境就是为了jenkins根据pom下载依赖和编译使用。 而发布的过程是通过Post Steps写的linux命令脚本来实现的。

遇到的问题
权限不足


权限不足,估计是很常见的问题之一了。执行vi /etc/sysconfig/jenkins命令,可以看到下图:

由上图可知,JENKINS_USER是jenkins,不是root,而我的目录/home/pec/www还有jenkins相关操作目录是root用户新建的,使用权限都是root组的用户或者root用户(ps:不明白用户与组概念的,可以看看我的这篇文章)。所以执行以下命令:

[root@localhost ~]# chown -R jenkins:jenkins /var/lib/jenkins
[root@localhost ~]# chown -R jenkins:jenkins /var/cache/jenkins
[root@localhost ~]# chown -R jenkins:jenkins /var/log/jenkins
[root@localhost ~]# chown -R jenkins:jenkins /home/pec/www

重启jenkins服务:

service jenkins restart

还有另一种解决方法,就是,你可以把JENKINS_USER改成是jenkins,然后重启即可。

kill 执行失败问题

其实最开始的脚本,我是直接使用的kill -9 pid,而没有做判断,这样是不对的。所以才改成了判断脚本

if ${pid}; then  #判断进程号id是否存在
    echo "pid is null"
else
    kill -9 ${pid}  #杀掉以前可能启动的项目进程
fi    #if结束标志

事实上,这样也还是有可能执行不成功,因为,可能由于不可知因素导致pid进程已经死掉了,这样的话,会不会也会执行失败。笔者就不深入了,留给读者发挥的空间。

还有值得一说的是,root 用户可用 kill 命令来停止任何进程。如果您并非 root 用户,那么您要停止的进程必须已由您启动。

jenkins自动部署分布式项目(六)——Jenkins复制和导出导入job Jenkins复制和导出导入job。 阅读详情

相关推荐

Jenkins 笔记

Jenkins 笔记Jenkins 入门 - 01- 安装部署基础环境安装jenkins Jenkins 入门 - 01- 安装部署 基础环境 操作系统 ,Cent OS 7.x 用户组和用户 devops/devops [root@cicd ~]# groupadd devops -g 601 [root@cicd ~]# useradd -g 601 -d /home/devops -m...

老胡的笔记 557

jenkins相关问题

在自动部署springboot项目中,一直无法后台运行 在执行脚本上加入 export BUILD_ID=dontKillMe 大体了解原因:Jenkins在构建结束后会把额外启动的进程杀死。 完整shell脚本 #!/bin/bash export BUILD_ID=dontKillMe echo "复制文件" cp ${WORKSPACE}/engineer-fix-employee/target/engineer-fix-employee-0.0.1-SNAPSHOT.jar /op.

kennan520的博客 290

.Net Core 通过jenkins 实现CI/CD (简单版)

本地(windows):windows 部署jenkins服务器(cenos 7.9):搭建net core 项目 (net 8)如果出现报错,多看日志在 Linux 上通过 Snap 安装 .NET SDK - .NET | Microsoft Learn。

qq_29365985的博客 2040

Jenkins 自动部署

1. Jenkins maven构建工程 1.1 全局工具配置 maven配置、jdk路径 Git配置: Maven路径: gitlab token配置: 从gitlab获取api token 2.1 构建配置 本文的jenkins是通过docker compose安装的,运行在docker容器中 创建新任务,选择构建一个maven...

yunfei1992的博客 801

Unity Jenkins 的环境配置(Windows)与本地Unity脚本构建过程

Unity Jenkins 的环境配置(Windows)与本地Unity脚本构建过程 一. Jnekins的环境配置 Jenkins的环境配置步骤如下: 1. 下载安装包,这里我安装的是WAR版本,从官网上下载最新的For Windows版本。下载地址 2. 下载好安装包后,解压后点击安装,一路默认就可以,以防在以后出现设置路径之类的问题。 3. 安装好后请耐性等待,会自己弹出一个w...

ZNWhahaha的博客 3239

Shader之——花草动画shader

今天 ,接到了个需求,花草的动画。谈到花草动画,立马就想到顶点动画,让顶点动起来就可以实现了。但是有个问题,所有的草都往一个方向运动,这个就麻烦了。因为在shader里没有随机这种概念,提到最多的是用一张噪声图来模拟。在网上搜索了一下,发现有更好的办法,就是用每个顶点到一个点的距离来控制动画的开始,毕竟每个顶点到同一个点的距离很少是一样的。 float dis = distance ...

baicaishisan的博客 2184

HP发布Jenkins最新UFT开源插件

就在UFT11.5发布之时,HP同时也发布了针对UFT的Jenkins开源插件 1)通过此插件可以运行来自HP ALM/QC或本地存储的测试脚本 2)你可以选择多个指定脚本甚至是文件夹 3)此插件会运行文件夹下的所有测试脚本 4)在build机上可以通过配置运行测试脚本 5)当然也可在远程机器上指定 6)如果你的测试脚本存储在HP ALM/QC的测试集中,则可以通过配置jenkins运

上善若水,水善利万物而不争。 4687

从注册到投稿:一步步教你完成KBS期刊的在线投稿流程(最新版)

本文详细介绍了如何完成KBS期刊的在线投稿流程,从账号注册到最终提交的全过程。特别针对初次使用Elsevier投稿系统的研究者,提供最新版系统的操作指南,包括投稿要求、文件格式、作者信息管理等关键步骤,帮助研究者顺利投稿至这一人工智能领域的知名期刊。

egg99的博客 1600

hexo博客自动发布

hexo是一款博客工具,可以将markdown文件自动转换成html静态页面,并且有丰富的主题可选,是一款很优秀的博客工具(关于hexo如何搭建,自行百度,很简单)。但是hexo有一个很大的不足,就是本地编辑的文件需要手动hexo g编译然后hexo deploy上传。 因为本身我有一台自己的腾讯云服务器,可以将其发布到上面。但是又不想那么麻烦,每次本地写完文章后,还要经过好多步骤才能发到网上。 于是就有了一个想法:能不能本地写完文章后自动发布到网上,实现完全自动化。 下面就是操作流程 ↓ ↓ ↓ 自动化架

wangking407的博客 652

R语言基础之R语言入门

R语言最初是由新西兰奥克兰大学统计系的教授Ross Ihaka和Robert Gentleman在S语言基础上开发完成的。是一门解释性语言。在我看来R语言是一门数学性极强的语言,或者说这是一门为数学而生的语言,因为其具有极其出色的计算与统计分析能力...

weixin_46912400的博客 5万+

Perplexity AI 高效使用培训手册

Perplexity AI 是一款革命性的 AI 搜索引擎,提供免费版和专业版两种选择。免费版支持基础搜索、每日3次Pro搜索、3个文件上传和初步深度研究功能;Pro版则解锁无限次Pro搜索、无限制文件上传、AI图像生成等高级功能,适合专业用户深度研究。该工具能整合网络信息、分析本地文档、生成创意内容,并提供知识库管理功能,显著提升信息检索和内容创作效率。用户可根据需求选择合适版本,免费版已能满足日常使用,而Pro版则更适合专业场景。

conquer_qgw的博客 1207

5.Jenkins自动发布项目

由于我们是在做测试,所以域名用的是假的,一定要在Jenkins服务器上做劫持,不然Jenkins不知道gitlab.test.com是谁。(凭证)填写的是Jenkins服务器的root用户的私钥,因为我更改了启动Jenkins的用户为root。接下来就该发布项目了,发布前,先准备好对应的环境。添加Jenkins的公钥到gitlab上,添加到对项目有权限的用户下。这里一定要注意,高版本jenkins的配置文件,不是以前的。,更改它是不起作用的,高版本Jenkins的配置文件为。集群中的每台机器的配置都一样。

JCWang的博客 978

Uncertainty-Aware Mean Teacher(UA-MT)

本文提出了一种新的基于不确定性的半监督学习框架(UA-MT),通过额外利用未标记的数据从3D MR图像中分割左心房。具体地说,本文建立了一个教师模型和一个学生模型,学生模型通过最小化标注数据上的分割监督损失和所有输入数据上的与教师模型预测输出的一致性损失进行优化。如果没有未标记输入中的注释,教师模型的预测目标可能不可靠且有噪声。:在估计不确定性 U 的指导下,我们过滤掉相对不可靠**(高不确定性),整个体积** U 的不确定性**是 {u} ∈ RH×W ×D。过滤掉高不确定性的,也就是熵大于某个值的。

Alexa_的博客 1870

使用Jenkins实现CocosCreator的自动化构建和发布(4)-增加Git管理

先创建Credentials 在Jenkins左侧面板Credentials -> System -> Add domain ,Kind选择 Username with password,填好 Username 和 Password,创建成功; 任务的构建配置里增加 Execute shell script on remote host using ssh,SSH site选中 t...

楚游香的博客 4385

【批处理脚本】-0.1-如何运行批处理bat文件

如何运行批处理bat文件

「汽车电子助手」的博客 1585

【YOLOv10[基础]】热力图可视化实践③ | 热力图脚本升级 | 优化可视化效果 | 论文必备 | GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM等

热力图可视化实践③ | 热力图脚本升级 | 优化可视化效果 | 论文必备 | 遥遥领先

静谧、淡雅 3221

十六、简单配置jenkins执行本地的robotframework项目

A、前期准备: 1.登录jenkins 2.系统管理-插件管理-高级-上传插件(http://mirrors.jenkins-ci.org/plugins/robot/,中选择一个版本的插件下载至本地,然后上传)-点击上传---提交 3.系统配置-全局安全配置(Configure Global Security)--选择代理,选择随机选取--点击代理协议:选择Java Web Start A...

旅行没有终点的博客 3699

27930-2015+充电协议解析

对2015+充电与2015充电进行硬件电路对比、通信协议对比和2015+通信协议解析。

manjixingkong1234的专栏 235

Linux部署JPom代替Jenkins构建和推送镜像并发布

这次JPom的部署我们就直接使用Linux安装而非Docker安装 考虑到有的项目环境是纯内网环境。

Anro的博客 3301

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

搭建jenkins构建环境并使用

一、jenkins构建环境 (一)给本地虚拟机安装java环境 1、首先把java安装包存放在下本地虚拟机/usr/local/jdk目录下,如果没有jdk目录,自己创建一个。测试Java环境是否安装成功,验证是否成功,进入jdk目录下的bin目录,运行./java -version,如果出现版本信息,则成功。然后配置java环境变量,在/etc/profile文件中 最下面添加以下语句: export JAVA_HOME=/usr/local/jdk/jdk1.8.0_171 export JRE_HOM

qq_24429681的博客 1963

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Jenkins的搭建---2

web项目 -- settings -- integrations -- 把复制的令牌和url粘贴过来 -- add webhook。项目web -- configure -- build -- Execute shell -- sh /scripts/web.sh。web项目-- configure -- build triggers -- 勾选最长选项 -- 点击高级advanced。-- configure -- 源代码库 -- git -- gitlab路径及私钥认证 -- save。

m0_64588258的博客 716

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jenkins配置

【代码】jenkins配置。

lijunwyf的专栏 51

jenkins 本地构建 分发到多台服务器

再本地构建要求成功之后 安装Publish Over SSH 插件 根据上图来添加 需要操作得服务器 提示一下 如果这里是 linux 系统 是没有任何问题得 我这里用得Windows 系统 上图 第一个留空 点击下边得 add 添加按钮 点击高级 我这里使用 用户名和 密码 链接 通过 ssh 远成链接操作 有个 test 测试按钮 点击 一下 如果 返回 success 成功 就表明 链接成功了 选择 我们建立并本地构建成功...

小河vlog 2136

jenkins获取远程服务器文件,Jenkins用SSH传输文件到远程服务器

使用SSH传输到远程服务器,需要有正确的Jenkins环境,包括maven环境,代码托管环境,Java环境,以及相关的Jenkins插件,这里默认这些环境已配好。远程发布有三个步骤:一、SSH插件安装二、SSH Service 配置三、发布服务一、安装SSH插件插件管理在可选插件下,过滤SSH,找到publish over ssh插件,直接安装(我这里已经安装过了,在已安装选项下可以找到publi...

weixin_33289873的博客 1779

13.CICD与Jenkins_03_流水线任务与集成钉钉

Jenkins流水线任务管理摘要 Jenkins流水线提供两种任务管理方式: Pipeline Script:直接在Jenkins界面编写脚本,包含pipeline{}定义、agent any指定执行节点、environment环境变量、stages构建阶段集合及各stage具体步骤。 Pipeline Script From SCM:通过Git仓库管理Jenkinsfile脚本文件,实现版本控制。需在项目根目录创建Jenkinsfile,配置时指定Git仓库地址和脚本路径。 流水线将构建过程划分为可视化阶

u011488477的博客 398
上一篇: linux用户与组管理命令
下一篇: jenkins 远程发布脚本
She_lock
博客等级 码龄12年 157粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值