總體思想:把gitlab上托管的項目代碼部署到遠(yuǎn)程服務(wù)器(可能不止一臺)梢薪,并且對應(yīng)于不同的環(huán)境(比如生產(chǎn)戒傻,測試友瘤,alpha環(huán)境等)要拉取不同branch的代碼挤土。
Jenkins
利用jenkins參數(shù)構(gòu)建插件
采用參數(shù)構(gòu)建調(diào)用shell腳本的方法
Fabric(基于fabric==1.13.2這個版本)
- fab —— 命令行工具识虚,安裝fabric時會自動安裝
- fabfile.py的構(gòu)建
注意fabfile 1.x跟2.x的區(qū)別
用到的接口一般都會來自fabric.api肢扯,所以實際調(diào)用可直接from fabric.api import *
命令接口:env, local, sudo, run, execute, put, cd
裝飾器:task(加入任務(wù)隊列), parallel(任務(wù)并行執(zhí)行), roles(其實是對應(yīng)env.roledefs)
boto EC2(因為服務(wù)器托管在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() # 當(dāng)然可以加一些filter條件
- 獲取instances,然后遍歷instances進而得到每個實例的private_ip_address
- 把3的結(jié)果update到env.roledefs