この記事でわかること
-
リリースに伴うGitのタグの張り替えるシェルで扱う作業の全体像 - 手順を進める前に確認したい前提
- 今の環境で試すときに気をつけたい点
はじめに
リリースに伴うGitのタグ張り替えのシェルスクリプトです。
今回は、リポジトリには含めずに、git cloneを実行するディレクトリにファイルを置くことを想定しています。
また、コミット管理用のタグとリリース作業時の切り戻し用のタグを扱う事を想定しています。
スクリプト
update_tags.sh
#!/bin/sh
REPOSITORY=[リポジトリ名]
TODAY=`date '+%Y%m%d'`
ENV_TYPE=[環境(dev, stg, prod)]
SYSTEM_NAME=[システム名]
BRANCH=${SYSTEM_NAME}-${ENV_TYPE} # ブランチの命名規則に従います
cd ${REPOSITORY}
TAG_NUM=$(printf "%02d" "`expr $(git tag -l "${TODAY}*${BRANCH}" | wc -l | awk '{print $1}') + 1`")
# リリースしたコミットの管理用タグ
RELEASE_TAG=${TODAY}-${TAG_NUM}-${BRANCH} # タグの命名規則に従います (YYYYMMDD-{採番}-ブランチ名)
# リリース作業の切り戻し用タグ
SWITCH_BACK_TAG=switch-back-${BRANCH}
# ローカルタグをリモートタグに強制的に上書きする
git pull -f origin ${BRANCH} --tag
## リリースしたコミット管理用のタグを追加
# ローカルタグ追加
git tag -a ${RELEASE_TAG} -m '' HEAD
# リモートタグ追加
git push origin ${RELEASE_TAG}
## 切り戻しタグの張り替え
# ローカルタグ削除
git tag -d ${SWITCH_BACK_TAG}
# リモートタグ削除
git push origin :refs/tags/${SWITCH_BACK_TAG}
# ローカルタグ追加
git tag -a ${SWITCH_BACK_TAG} -m '' HEAD
# リモートタグ追加
git push origin ${SWITCH_BACK_TAG}
cd ..
実務で使うときの確認ポイント
- 対象環境、実行ユーザー、カレントディレクトリを確認してからコマンドを実行する。
- 破壊的な操作は、バックアップやdry-run相当の確認をしてから進める。
- スクリプト化する場合は、失敗時の終了コード、ログ、再実行時の挙動を確認する。
おわりに
ここまで読んでいただきありがとうございました。
Wealthy Designでは、AWS・Webシステム開発・AI活用など、現場で使える技術を大切にしています。
会社の取り組みは、会社サイトにまとめています。

