Advertisement
Guest User

Untitled

a guest
Feb 8th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. #!/usr/bin/env python
  2. from fabric.api import *
  3. from fabric.colors import *
  4. from fabric.context_managers import *
  5. from fabric.contrib.console import confirm
  6. import time
  7.  
  8. env.user='root'
  9. env.hosts=['192.168.1.21','192.168.1.22']
  10. env.password='SKJh935yft#'
  11.  
  12. env.project_dev_source = '/data/dev/Lwebadmin/'
  13. env.project_tar_source = '/data/dev/releases/'
  14. env.project_pack_name = 'release'
  15.  
  16. env.deploy_project_root = '/data/www/Lwebadmin/'
  17. env.deploy_release_dir = 'releases'
  18. env.deploy_current_dir = 'current'
  19.  
  20. env.deploy_version=time.strftime("%Y%m%d")+"v2"
  21.  
  22. @runs_once
  23. def input_versionid():
  24. return prompt("please input project rollback version ID:",default="")
  25.  
  26. @task
  27. @runs_once
  28. def tar_source():
  29. print yellow("Creating source package...")
  30. with lcd(env.project_dev_source):
  31. local("tar -czf %s.tar.gz ." % (env.project_tar_source + env.project_pack_name))
  32. print green("Creating source package success!")
  33.  
  34.  
  35. @task
  36. def put_package():
  37. print yellow("Start put package...")
  38. with settings(warn_only=True):
  39. with cd(env.deploy_project_root+env.deploy_release_dir):
  40. run("mkdir %s" % (env.deploy_version))
  41. env.deploy_full_path=env.deploy_project_root + env.deploy_release_dir + "/"+env.deploy_version
  42.  
  43. with settings(warn_only=True):
  44. result = put(env.project_tar_source + env.project_pack_name +".tar.gz",env.deploy_full_path)
  45. if result.failed and no("put file failed, Continue[Y/N]?"):
  46. abort("Aborting file put task!")
  47.  
  48. with cd(env.deploy_full_path):
  49. run("tar -zxvf %s.tar.gz" % (env.project_pack_name))
  50. run("rm -rf %s.tar.gz" % (env.project_pack_name))
  51.  
  52. print green("Put & untar package success!")
  53.  
  54.  
  55. @task
  56. def make_symlink():
  57. print yellow("update current symlink")
  58. env.deploy_full_path=env.deploy_project_root + env.deploy_release_dir + "/"+env.deploy_version
  59. with settings(warn_only=True):
  60. run("rm -rf %s" % (env.deploy_project_root + env.deploy_current_dir))
  61. run("ln -s %s %s" % (env.deploy_full_path, env.deploy_project_root + env.deploy_current_dir))
  62. print green("make symlink success!")
  63.  
  64. @task
  65. def rollback():
  66. print yellow("rollback project version")
  67. versionid= input_versionid()
  68. if versionid=='':
  69. abort("Project version ID error,abort!")
  70.  
  71. env.deploy_full_path=env.deploy_project_root + env.deploy_release_dir + "/"+versionid
  72. run("rm -f %s" % env.deploy_project_root + env.deploy_current_dir)
  73. run("ln -s %s %s" % (env.deploy_full_path, env.deploy_project_root + env.deploy_current_dir))
  74. print green("rollback success!")
  75.  
  76. @task
  77. def go():
  78. tar_source()
  79. put_package()
  80. make_symlink()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement