Jenkins中的一键部署与版本更新
admin
2023-03-08 18:42:09
0次

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

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

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


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

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

使用过程:

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自动分发:在工程设置中,添加构建步骤

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

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

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校验没有问题,则解压这个版本的文件,并创建快捷方式



相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...