Fabricを使って、ローカル側からリモート側のプロジェクト側にてgit pullを実行させる。

今まで、このブログは以下の方法で運用していた。

  • ローカルでmarkdownファイルを作る。
  • bitbucketのほうにpushする。
  • リモートサーバーにログインして、git pullを実行。

でもこの方法だと、毎回サーバーにログインする必要が出てきて面倒。 そこでPythonのFabricというライブラリを使って

fab push

を行うだけでリモート側で git pull をしてくれるコードを書いた。

プロジェクトのルートディレクトリに以下のfabfile.pyを置くだけ。

#coding: utf-8
from fabric.api import run,env,local,settings
from fabric.operations import sudo
from fabric.context_managers import cd
import os

def try_cmd(host_type,cmd):
    run_cmd = host_type(cmd)

def host_type():
    run("uname -s")

from fabric.api import env, run
env.use_ssh_config = True

env.user = "your name"
env.hosts = ["your server's ip address"]

def push():
    with settings():

        #ローカル側の操作

        try_cmd("git commit -am 'update'")
        try_cmd(local,"git push origin master")

        #リモート側の操作

        with cd("/your/project's/path"):
            try_cmd(sudo,"git pull origin master")

これで幸せの実現ができた。

Related Contents

Pickup Contents