使用fabric进行代码的自动化部署
2015-01-05 20:56
204 查看
#coding=utf-8 from fabric.api import local, abort, settings, env, cd, run from fabric.colors import * from fabric.contrib.console import confirm env.hosts = ["root@115.28.×××××"] env.password = "×××××" def get_git_status(): git_status_result = local("git status", capture=True) if "无文件要提交,干净的工作区" not in git_status_result: print red("****当前分支还有文件没有提交") print git_status_result abort("****已经终止") def local_unit_test(): with settings(warn_only=True): test_result = local("python manage.py test") if test_result.failed: print test_result if not confirm(red("****单元测试失败,是否继续?")): abort("****已经终止") def server_unit_test(): with settings(warn_only=True): test_result = run("python manage.py test") if test_result.failed: print test_result if not confirm(red("****单元测试失败,是否继续?")): abort("****已经终止") def upload_code(): local("git push origin dev") print green("****代码上传成功") def deploy_at_server(): print green("****ssh到服务器进行下列操作") with cd("/var/www/××××××"): #print run("pwd") print green("****将在远程仓库下载代码") run("git checkout dev") get_git_status() run("git pull origin dev") print green("****将在服务器上运行单元测试") server_unit_test() run("service apache2 restart", pty=False) print 4000 green("****重启apache2成功") print green("********代码部署成功********") def deploy(): get_git_status() local("git checkout dev", capture=False) print green("****切换到dev分支") get_git_status() print green("****将开始运行单元测试") local_unit_test() print green("****单元测试完成,开始上传代码") upload_code() deploy_at_server()
fabric可以将自动化部署或者多机操作的命令固化到一个脚本里,从而减少手动的操作。上面是今天第一次接触这东西后写的,确实很实用。运行
fab deploy就行了。
主要逻辑就是将本地的dev分支跑单元测试,然后提交到服务器,ssh登陆到服务器,然后pull下来,再跑单元测试,然后重启apache2。第一次写,可能比较简单,将持续改进。
相关文章推荐
- maven工程使用spring-boot-devtools进行热部署,更改代码避免重启web容器
- 使用Github的Webhooks进行网站的自动化部署
- Python的自动化部署模块Fabric的安装及使用指南
- spring boot项目中使用spring-boot-devtools模块进行代码热部署,避免重新启动web项目
- 使用 GitHub / GitLab 的 Webhooks 进行网站自动化部署
- spring boot项目中使用spring-boot-devtools模块进行代码热部署,避免重新启动web项目
- spring boot项目中使用spring-boot-devtools模块进行代码热部署,避免重新启动web项目
- 使用MonkeyTest对Android客户端进行压力测试 自动化代码
- 使用Jenkins进行CI集成化测试和自动化部署
- spring boot项目中使用spring-boot-devtools模块进行代码热部署,避免重新启动web项目
- spring boot项目中使用spring-boot-devtools模块进行代码热部署,避免重新启动web项目
- 使用Jenkins+Sonarqueb进行自动化测试和代码质量检测
- 使用Github的webhooks进行代码的自动化同步
- 【Webhooks】使用Git的Webhooks进行服务器自动部署代码
- 使用Eclipse(以及intellij IDEA)配合JDWP对服务器上部署的代码进行调试
- Django 博客开发教程 15 - 使用 Fabric 自动化部署
- 使用开源my-deploy工具实现开发环境的代码自动化部署
- spring boot项目中使用spring-boot-devtools模块进行代码热部署,避免重新启动web项目
- maven工程使用spring-boot-devtools进行热部署,更改代码避免重启web容器
- 使用 GitHub / GitLab 的 Webhooks 进行网站自动化部署