Jenkins通过脚本进行自动发布
编写以下脚本:
-------------------------------------------------------------------------------------
#!/bin/sh
name=web-$(date +%F)-$(($RANDOM+10000))
host=$1
job_name=$2
cd /var/lib/jenkins/workspace/${job_name} && tar zcf /opt/${name}.tar.gz ./*
ssh ${host} "cd /usr/share/nginx && mkdir ${name}"
scp -r /opt/${name}.tar.gz ${host}:/usr/share/nginx/${name}
ssh ${host} "cd /usr/share/nginx/${name} && tar xf ${name}.tar.gz && rm -f ${name}.tar.gz"
ssh ${host} "cd /usr/share/nginx && rm -rf html && ln -s /usr/share/nginx/${name} /usr/share/nginx/html"
ssh ${host} "nginx -s reload"
-------------------------------------------------------------------------------------
使用脚本方法:
sh -x jenkins.sh 10.0.0.66 my-freestyle-job
将 /var/lib/jenkins/workspace/my-freestyle-job 目录内容打包 传送到需要发布的服务nginx器中.部署完成后 重启服务器.
发布结果:
[root@node2 nginx]# ll
total 8
lrwxrwxrwx 1 root root 37 Dec 29 22:29 html -> /usr/share/nginx/web-2019-12-29-42021
drwxr-xr-x 2 root root 143 Dec 29 21:43 modules
-rw-r--r-- 1 root root 1731 Dec 29 22:29 web-2019-12-29-42021
-rw-r--r-- 1 root root 1731 Dec 29 22:19 web-2019-12-29-41061
#这样做的好处就是每次网站都会被备份,每次都会指向web根目录. 发布过程影响较小
#使用这种方法回退也非常简单,如: 我们发现 web-2019-12-29-42021 该版本有问题,回退方式就是:
rm -f /usr/share/nginx/web-2019-12-29-42021
ln -s /usr/share/nginx/web-2019-12-29-41061 /usr/share/nginx/html
#!/bin/sh
name=web-$(date +%F)-$(($RANDOM+10000))
host=$1
job_name=$2
cd /var/lib/jenkins/workspace/${job_name} && tar zcf /opt/${name}.tar.gz ./*
ssh ${host} "cd /usr/share/nginx && mkdir ${name}"
scp -r /opt/${name}.tar.gz ${host}:/usr/share/nginx/${name}
ssh ${host} "cd /usr/share/nginx/${name} && tar xf ${name}.tar.gz && rm -f ${name}.tar.gz"
ssh ${host} "cd /usr/share/nginx && rm -rf html && ln -s /usr/share/nginx/${name} /usr/share/nginx/html"
ssh ${host} "nginx -s reload"

微信赞赏

支付宝赞赏

【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· 编程神器Trae:当我用上后,才知道自己的创造力被低估了多少
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· Ai满嘴顺口溜,想考研?浪费我几个小时
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密