Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2914

1日に何度もデプロイする人のためのgit操作スクリプト

$
0
0

文言修正などのたびに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

つぶやき

各位秘蔵のマージ&デプロイスクリプトあると思うのですが、ググってもうまく見つかなかったので書いてみました。
(シェル芸人の人たちにとっては書くほどでもないのかもしれない。。)


Viewing all articles
Browse latest Browse all 2914

Trending Articles