Help us understand the problem. What is going on with this article?

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

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

つぶやき

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした