标签:git tar get 部署 app gz url jenkins md5
- [root@localhost ~]# vim deploy_web.py
- import requests
- import os
- import hashlib
- import tarfile
- from urllib import request
- #使用url进行get请求,获取网站文本信息,获取当前版本
- def get_webdata(url):
- r = requests.get(url)
- return r.text
- #将网址内容下载到fname文件中
- def download(url, fname):
- html = request.urlopen(url)
- with open(fname, 'wb') as fobj:
- while True:
- data = html.read(1024)
- if not data:
- break
- fobj.write(data)
- #检查文件MD5值
- def check_md5(fname):
- m = hashlib.md5()
- with open(fname, 'rb') as fobj:
- while True:
- data = fobj.read(4096)
- if not data:
- break
- m.update(data)
- return m.hexdigest()
- #部署版本,应用发布代码
- def deploy(app): # /var/www/packages/myproject_2.0.tar.gz
- #切换路径到/var/www/packages路径下
- os.chdir('/var/www/packages')
- #解压缩myproject_2.0.tar.gz文件
- tar = tarfile.open(app, 'r:gz')
- tar.extractall()
- tar.close()
- #将.tar.gz替换成空字符串
- src = app.replace('.tar.gz', '')
- #创建/var/www/html/mysite软链接
- dst = '/var/www/html/mysite'
- if os.path.exists(dst): #如果文件存在
- os.unlink(dst) #删除
- os.symlink(src, dst) #否则创建软链接
- if __name__ == '__main__':
- #调用get_webdata()函数,目的是以发布服务器'http://192.168.122.73/live_version'网址为参数获取当前版本,ver结果为2.0
- ver = get_webdata('http://192.168.122.73/live_version').strip()
- app_name = 'myproject_%s.tar.gz' % ver
- #app_url为下载myproject_2.0.tar.gz文件网址
- app_url = 'http://192.168.122.73/packages/' + app_name
- #目标文件
- app_path = os.path.join('/var/www/packages', app_name)
- #调用download()函数,目的是从app_url网址读取数据存入目标文件
- download(app_url, app_path)
- #调用check_md5()函数,目的是计算目标文件MD5值
- local_md5 = check_md5(app_path)
- #调用get_webdata()函数,目的从发布服务器网址获取md5值
- remote_md5 = get_webdata(app_url + '.md5').strip()
- #如果目标文件md5值和发布服务器提供的md5值相等,确认下载的文件无误,调用deploy()函数,以目标文件作为参数进行部署
- if local_md5 == remote_md5:
- deploy(app_path)
标签:git,tar,get,部署,app,gz,url,jenkins,md5 来源: https://www.cnblogs.com/jeffzhao/p/11856306.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。