文言修正などのたびにgitでマージしてデプロイするのがきついのでスクリプトで簡単にする話になります。
いままで
ステージングブランチにfeatureブランチをマージしてデプロイする流れで説明します。
大抵は下記の流れになるかと思います
git checkout staging
git pull
git merge featureブランチ
git push
デプロイスクリプト実行など(CIが自動でやる場合は省略)
たかだか文言修正のためにコマンド5回実行は面倒ですよね。
改善後
下記スクリプトをコピペかスクリプトファイルにして1発実行できます。
適用したいfeatureブランチにいる状態で実行して下さい。
current_branch=`git symbolic-ref --short HEAD`
if [ ! $current_branch = "staging" ] && [ ! $current_branch = "master" ]; then
true
else
echo 'error. staging, master branch'
false
fi && git checkout staging &&
git pull &&
git merge --no-edit $current_branch &&
git push &&
bundle exec cap staging deploy && # (ここは任意のデプロイスクリプトに置き換えてください)
# featureブランチに戻る場合
git checkout $current_branch
間違ってmasterやstagingブランチにいる状態でマージしないように最初にチェックしています(一度やらかしたので。。改善点です)
シェルスクリプトmemo
&&で前回実行のコマンドの終了ステータス$?が成功(0)の場合のみ続けて実行されるのを利用し途中失敗しても安全にしたつもりです。
ちなみに途中でコメントはさんでも&&が正しく機能しました。下記のechoは実行されません。
false &&
# コメントテスト
echo 'test'
trueコマンドとfalseコマンドは地味に使えますね。
if分の中でメイン処理書きたくなかったのでこの形にしました。
fiのあとに&&で実行判断するのに終了ステータス書き換えたいなーと悩んでたらそういえばあったなと。
環境
Mac Mojave 標準bash
つぶやき
各位秘蔵のマージ&デプロイスクリプトあると思うのですが、ググってもうまく見つかなかったので書いてみました。
(シェル芸人の人たちにとっては書くほどでもないのかもしれない。。)