git jenkins 部署

  1. [root@localhost ~]# vim deploy_web.py
  2. import requests
  3. import os
  4. import hashlib
  5. import tarfile
  6. from urllib import request
  7. #使用url进行get请求,获取网站文本信息,获取当前版本
  8. def get_webdata(url):
  9. r = requests.get(url)
  10. return r.text
  11. #将网址内容下载到fname文件中
  12. def download(url, fname):
  13. html = request.urlopen(url)
  14. with open(fname, 'wb') as fobj:
  15. while True:
  16. data = html.read(1024)
  17. if not data:
  18. break
  19. fobj.write(data)
  20. #检查文件MD5值
  21. def check_md5(fname):
  22. m = hashlib.md5()
  23. with open(fname, 'rb') as fobj:
  24. while True:
  25. data = fobj.read(4096)
  26. if not data:
  27. break
  28. m.update(data)
  29. return m.hexdigest()
  30. #部署版本,应用发布代码
  31. def deploy(app): # /var/www/packages/myproject_2.0.tar.gz
  32. #切换路径到/var/www/packages路径下
  33. os.chdir('/var/www/packages')
  34. #解压缩myproject_2.0.tar.gz文件
  35. tar = tarfile.open(app, 'r:gz')
  36. tar.extractall()
  37. tar.close()
  38. #将.tar.gz替换成空字符串
  39. src = app.replace('.tar.gz', '')
  40. #创建/var/www/html/mysite软链接
  41. dst = '/var/www/html/mysite'
  42. if os.path.exists(dst):    #如果文件存在
  43. os.unlink(dst)            #删除
  44. os.symlink(src, dst)        #否则创建软链接
  45. if __name__ == '__main__':
  46. #调用get_webdata()函数,目的是以发布服务器'http://192.168.122.73/live_version'网址为参数获取当前版本,ver结果为2.0
  47. ver = get_webdata('http://192.168.122.73/live_version').strip()
  48. app_name = 'myproject_%s.tar.gz' % ver
  49. #app_url为下载myproject_2.0.tar.gz文件网址
  50. app_url = 'http://192.168.122.73/packages/' + app_name
  51. #目标文件
  52. app_path = os.path.join('/var/www/packages', app_name)
  53. #调用download()函数,目的是从app_url网址读取数据存入目标文件
  54. download(app_url, app_path)
  55. #调用check_md5()函数,目的是计算目标文件MD5值
  56. local_md5 = check_md5(app_path)
  57. #调用get_webdata()函数,目的从发布服务器网址获取md5值
  58. remote_md5 = get_webdata(app_url + '.md5').strip()
  59. #如果目标文件md5值和发布服务器提供的md5值相等,确认下载的文件无误,调用deploy()函数,以目标文件作为参数进行部署
  60. if local_md5 == remote_md5:
  61. deploy(app_path)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐