总体思想:把gitlab上托管的项目代码部署到远程服务器(可能不止一台),并且对应于不同的环境(比如生产,测试,alpha环境等)要拉取不同branch的代码。
Jenkins
利用jenkins参数构建插件
采用参数构建调用shell脚本的方法
Fabric(基于fabric==1.13.2这个版本)
- fab —— 命令行工具,安装fabric时会自动安装
- fabfile.py的构建
注意fabfile 1.x跟2.x的区别
用到的接口一般都会来自fabric.api,所以实际调用可直接from fabric.api import *
命令接口:env, local, sudo, run, execute, put, cd
装饰器:task(加入任务队列), parallel(任务并行执行), roles(其实是对应env.roledefs)
boto EC2(因为服务器托管在AWS)
- 首先连接EC2
from boto import ec2
conn = ec2.connnect_to_region(aws_region, aws_access_key, aws_access_secret)
- 获取reservations
reservations = conn.get_all_instances() # 当然可以加一些filter条件
- 获取instances,然后遍历instances进而得到每个实例的private_ip_address
- 把3的结果update到env.roledefs