# Fabric fabric1 과 fabric2 가 다르다. - fabric2 : https://docs.fabfile.org/en/2.6/ from fabric import Connection, task, Config from invoke import run as local config = Config( overrides={ 'sudo': { 'user': SUDO_USER, 'password': SUDO_PASSWORD } } ) conn = Connection( host=YOUR_HOST, user=SUDO_USER, connect_kwargs={ "key_filename": KEY_FILE, }, config=config ) project_path = YOUR_PROJECT_PATH @task def dp(c): prepare_deploy() get_latest_source() reload() def prepare_deploy(): local("git add -p && git commit", pty=True, warn=True) local("git push", pty=True, warn=True) def get_latest_source(): result = local("git log -n 1 --format=%H") current_commit = result.stdout.splitlines()[-1] print(f'current_commit : {current_commit}') with conn.cd(project_path): conn.run("git fetch") conn.run(f"git reset --hard {current_commit}") def reload(): print('sudo password:', conn['sudo']['password']) conn.sudo("systemctl restart gunicorn", user='root')