jenkins 本地发布脚本

本文不探讨如何安装配置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_USERjenkins,不是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 自动化部署 Python 脚本至 Windows 10 对于在 Windows 10 上配置 Jenkins 来自动化部署 Python 应用程序的过程,主要涉及几个方面的工作:安装必要的组件、设置 Jenkins 构建作业以及编写适合于 Windows 的构建脚本来完成应用程序的更新和启动。 #### 安装必要组件 确保 Windows 10 系统已安装 Git 和 Python 解释器。这些工具可以通过官方渠道下载并按照指引进行安装。另外,还需安装 Java Runtime Environment (JRE),因为 Jenkins 是基于 Java 开发的服务端应用[^1]。 #### 设置 Jenkins Server 如果尚未搭建 Jenkins 实例,则需先在其官网上获取最新版本,并依据文档指导完成本地或远程服务器上的安装工作。考虑到跨平台兼容性问题,在 Windows 平台上运行 Jenkins 更推荐采用独立可执行文件的形式而非服务方式安装。完成后可通过浏览器访问 `http://localhost:8080` 初始化 Jenkins[^2]。 #### 创建新的 Jenkins Job 进入 Jenkins 主界面后点击左侧菜单中的 “新建任务”,输入项目名称选择自由风格软件项目创建新任务。随后切换到源码管理标签页指定仓库 URL 及分支信息;再转到构建触发条件部分设定计划时间表达式以便定期触发构建流程(如每晚零点),此功能依赖于 Cron 表达式的语法支持[^4]。 #### 编写适用于 Windows 的 Shell 或 Batch Script 由于目标操作系统为 Windows ,因此建议使用批处理命令或者 PowerShell 命令代替 Unix/Linux 下常用的 shell script 。下面给出一段简单的 batch 文件样例用于演示如何拉取最新的代码库更改、安装所需的 python 包以及重启 web service: ```batch @echo off cd /d D:\my_python_app\src\ git pull origin master pip install -r requirements.txt net stop my_service_name timeout /t 5 /nobreak start "" "C:\Program Files\MyService\myservice.exe" ``` 上述脚本假设已经预先设置了环境变量 PATH 包含 git 和 pip 所处路径,并且 Web Service 已经注册成为 windows services 中的一员能够被 net command 控制其状态变化。实际场景里可能还需要额外考虑权限控制等因素影响脚本正常运作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值