0

gitのpost-commitでpush/deployする

タイトルのまんまですが、近頃gitの運用フローを試行錯誤していて、その時に書いたシェルスクリプトの改変版です。
.git/hooks/post-commitに突っ込めば良いです。

1,developmentブランチでcommit

2,リモートリポジトリにpushする。

3,capistranoで開発環境へデプロイする。

というのが対話形式で実行されます。
リモートサーバーでhookさせて本番環境にデプロイというのが王道な気がするけど、capistranoのレシピも育ってきたしデプロイはローカルからやろって変わった人向けです。

#!/bin/sh
BRANCH=`git symbolic-ref HEAD`
case $BRANCH in
    *development)
    exec < /dev/tty
    while true; do
        read -p "Do you want to push $BRANCH to a remote repositry? (Y/n)" yn
        case $yn in
            [y]) git push
                  break ;;
            [n]) break ;;
            *) echo "Please answer Y or n for yes or no." ;;
            esac
    done
    while true; do
        read -p "Do you want to deploy $BRANCH to a development server? (Y/n)" yn
        case $yn in
            [Y]) cap @development deploy
                  break ;;
            [n]) break ;;
            *) echo "Please answer Y or n for yes or no." ;;
            esac
    done
esac
未分類