#!/usr/bin/python
# -*- coding: utf-8 -*
from fabric.api import *
from fabric.contrib.files import *
## 需要注意的是,这里的host strings必须由username@host:port三部分构成,缺一不可,否则运行时还是会要求输入密码
env.hosts = [
'root@2.21.103.123',
]
env.passwords = {
'root@2.21.103.123:22': '111111',
}
env.sdir="/data/soft/soft/"
env.username = 'wangteng'
env.email = 'wangteng@qq.cn'
env.gitlab_url = 'http://git.qqq.cn/qq_devops/zq.git'
def test_exist_dir():
# 检查仓库是否已经存在
if int(run(" [ -e '%s' ] && echo 11 || echo 10" % env.sdir)) == 11:
result = True
else:
result = False
return result
@task
def git_config():
# 配置git,这个配置只需一次就好
try:
run('git config --global user.name "%s"'%env.username)
run('git config --global user.email "%s"'%env.email)
run('git remote add origin %s'%env.gitlab_url)
except:
pass
def make_dir():
# 如果目录不存在,则创建目录,初始化为仓库,并将代码下载到仓库
run('mkdir -p %s;git init'%(env.sdir,))
git_config()
run('cd %s;git clone %s'%(env.sdir,env.gitlab_url))
def get_file():
# 如果仓库存在,进行代码更新
dir_name = env.sdir+env.gitlab_url.split('/')[-1].split('.')[0]
run('cd %s;git pull'%dir_name)
@task
def start():
flag = test_exist_dir()
if flag:
get_file()
else:
make_dir()
@task
def no_username_password():
run('cd /;git config --global credential.helper store')
# fab -f test_fabric.py start --hide status,running,stdout,user,aborts,warnings,stderr 忽略所有输出