0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

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

つぶやき

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?