heshao2005 发表于 2017-12-30 22:54:09

PHP 基于 Jenkins ansible 动态选择版本进行自动化部署与回滚(第二版)

#!/usr/bin/env python  # -*-coding=utf-8-*-
  # __author__ = 'ccorz'
  import argparse, os, shutil
  class Deploye:
  def __init__(self):
  parse = argparse.ArgumentParser()
  parse.add_argument('-job_name', type=str, required=True)
  parse.add_argument('-build_id', type=str)
  parse.add_argument('-repo_path', type=str)
  parse.add_argument('-jenkins_home', type=str)
  self.args = parse.parse_args()
  self.job_repo = '%s/%s' % (self.args.repo_path, self.args.job_name)
  self.job_git = '%s/workspace/%s/' % (self.args.jenkins_home, self.args.job_name)
  self.job_code = '%s/code' % self.job_repo
  self.job_rollback = '%s/rollback' % self.job_repo
  def path_handler(self):
  """判断代码库目录是否存在,不存在则创建"""
  # print(self.args.repo_path)
  if not os.path.exists(self.args.repo_path):
  os.mkdir(self.args.repo_path)
  if not os.path.exists(self.job_repo):
  os.makedirs(self.job_rollback,exist_ok=True)
  else:
  shutil.rmtree(self.job_code)
  def copy_code(self):
  shutil.copytree(self.job_git, self.job_code,symlinks=False,ignore=shutil.ignore_patterns('.git'))
  os.system('find %s -ctime +2 -exec rm -rf {} \;' % self.job_rollback)
  shutil.copytree(self.job_git, "%s/%s"%(self.job_rollback,self.args.build_id),
  symlinks=False,ignore=shutil.ignore_patterns('.git'))
  if __name__ == '__main__':
  obj = Deploye()
  obj.path_handler()
  obj.copy_code()
页: [1]
查看完整版本: PHP 基于 Jenkins ansible 动态选择版本进行自动化部署与回滚(第二版)