千家信息网

Jenkins中的一键部署与版本更新

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,Jenkins作为一款持续集成,持续部署的软件,是由java编写的一款开源软件• 作为一款非常流行的CI(持续集成)工作,用于构建和测试各种项目• Jenkins 的主要功能是监视重复工作的执行,例如
千家信息网最后更新 2025年12月03日Jenkins中的一键部署与版本更新

Jenkins作为一款持续集成,持续部署的软件,是由java编写的一款开源软件

• 作为一款非常流行的CI(持续集成)工作,用于构建和测试各种项目

• Jenkins 的主要功能是监视重复工作的执行,例如软件工程的构建或在 cron下设置的 jobs


DEV ---> GIT ---->CI(持续集成) ----->CD(持续部署)

使用过程:

Dev客户端

1.搭建好git服务器,并使用git add . +git commit -m 'project' 上传至本地文件

2.Git tag v 1.0 ----打标签 git push,git push --tag推上去

Git端

3.登录到github服务器,新建项目与群组,并将客户端的git仓库使用http推到项目中

Jenkins服务端

4.在jenkins服务器上,建立自己的工程,其中添加git-parameter,并输入gitlab相关url使其能够与gitlab的项目通信,

5.可以在主菜单后会可以在build with parameter中看到各种上传到gitlab上的版本,通过开始构建,将gitlab上的项目下载到jenkens上,搭建web,将文件打包放在web上方便分发


6.编写脚本,实现Jenkins中文件的自动部署,版本更新


本篇主要对步骤5,6进行自动管理:

步骤5:将Jenkins上的文件一键部署至http共享

Jenkins的http自动分发:在工程设置中,添加构建步骤

newcodes_${freetag} :路径是/var/lib/jenkins/workspace/freesttle

#将版本文件从newcodes_${freetag}放到deploy_dir

------------------------------------------------------------------------

shell代码

deploy_dir= /var/www/html/deploy/packages/

cp -r newcodes_${freetag} $deploy_dir

rm -rf $deploy_dir/newcodes_${freetag}/.git #删除拷贝后原版本文件中的.git文件

cd $deploy_dir

在新的路径下打包拷贝过来的版本文件

tar czf newcodes_${freetag}.tar.gz newcodes_${freetag}

rm -rf newcodes_${freetag} #删除拷贝过来的源文件,只留tar

md5sum newcodes_${freetag}.tar.gz | awk '{print $1}' > newcodes_${freetag}.tar.gz.md5

#md5计算出tar包校验值,存放在对应文件下

-------------------------------------------------------------------------------

新建立一个 mp_live_version 版本更新功能

#新版本(live_version,上一个版本(lastest_version

#[ -e 存在这个路径] && 则将live_version内容写入lastest_version

#将新的输入内容写如新版本

[ -e /var/www/html/deploy/live_version ] && cat /var/www/html/deploy/live_version > /var/www/html/deploy/last_version

echo ${mp_live_ver} > /var/www/html/deploy/live_version


步骤6:从jenkins上下载最新的版本文件并自动完成部署(web网页部署)

#服务器/var/www/html下提供live_version(最新版本),lastest_version(上一版本)版本文件。提供packages/XXX_1.tar.gz文件

import requests
from urllib import request
import hashlib
import os
import tarfile


def get_data(url): #负责将远端的文件打开text的格式
r = requests.get(url) #下载当地地址
return r.text #返回文本格式


def download(url,fname): #下载文件,前面的download脚本
html = request.urlopen(url) #下载最新的tar
with open(fname, 'wb') as fobj:
while True:
data = html.read(
1024)
if not data:
break
fobj.write(data)


def check_md5(fname): #校验md5数值,求fname文件的md5数值
m = hashlib.md5()
with open(fname, 'rb') as fobj:#打开文件逐步读取
while True:
data = fobj.read(
1024)
if not data:
break
m.update(data) #将每次的md5数值更新
return m.hexdigest() #md5数值转化成可读的形式


def deploy(app): #部署,先切到目录,解压tar,创建快捷方式
os.chdir('/var/www/packages') #cd 到这个路径下
tar = tarfile.open(app, 'r:gz') #app路径的文件进行解包
tar.extractall()
tar.close()
src = app.replace(
'.tar.gz','') #.tar.gz 替换为''/var/www/html/packages
dst = '/var/www/html/mysite' #创建快捷方式的路径
if os.path.exists(dst): #创建的路径是否已经存在,若存在则删除路径后,再次创建
os.unlink(dst)
os.symlink(src,dst)
#创建快捷方式



if __name__ == '__main__':
ver = get_data(
'http://192.168.122.59/deploy/live_version') #版本信息在/var/www/html/
app_name = 'myproject_%s.tar.gz' %ver #压缩包的文件名
app_url = 'http://192.168.122.59/packages/' + app_name #压缩包的网络文件路径
app_path = os.path.join('/var/www/packages',app_name) #完整的下载到本机路径
download(app_url,app_path) #下载到本的
locals_md5 = check_md5(app_path)
remote_md5 = get_data(app_url+
'.md5').strip() #下载远程的md5文件,并将内容后面的/n去掉
if locals_md5 == remote_md5:
deploy(app_path)
#md5校验没有问题,则解压这个版本的文件,并创建快捷方式



文件 版本 路径 项目 服务 数值 方式 服务器 步骤 更新 内容 工程 拷贝 软件 功能 客户 格式 端的 脚本 并将 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东移动软件开发薪资待遇 怎么使用代理服务器上网手机 服务器电源哪个牌子最好 新倩女幽魂哪些服务器可以6开 因为网络安全所发生的死亡 苏州麻将游戏软件开发 网络安全中的ACG是什么 汕头金融软件开发方案 网络安全手抄报的内容是什么 计算机网络技术基础中三步 快运滴软件开发者 小学生网络安全竞赛试题 东营职业计算机网络技术 黑暗之魂连接服务器有什么用 免费化合物数据库 软件开发招聘郑州 九旺网络技术有限公司年会 丹江口好的软件开发技术指导 如何设置计算机管理服务器 数据库 group 数据库中图书类别有什么用 什么数据库简单 微信提示服务器维护中 靠谱软件开发企业网站建设 深圳掘金网络技术科技有限公司 软件开发大学生培训 根据什么对网络安全事件分级 上海注册网络技术有限公司 网络安全维护面试题 富士康工业互联网科技公司
0