アプリ作成やWebサイトを作成すると、機能改善した内容や 不具合を修正した内容を記載するリリースノートを公開することがあります。
言うなればアプリのアップデート情報も、リリースノートの一種です。
実は、GitHubでリリースノートを自動生成できるのをご存知でしょうか?
僕も先日まで知らなかったので、今回は実際にリポジトリを用意して リリースノートを自動生成してみたいと思います。
手順
リリースノートを自動生成するには 3つの手順が必要です。
1 . 対象ブランチに対してのマージ済みのプルリクエスト
2 . コミットにタグを付ける (main、master、release等のリリースブランチのコミット)
3 . GitHubのサイトから、タグを指定してリリースノートを自動生成
タグを作成する
それではコミットに対してタグ付けをしていきます。mainの最新のコミットにタグ付けしましょう。
# 1. ブランチに移動
$ git checkout main
# 2. ブランチの最新コミットに対して、注釈付きのタグを作成
$ git tag -a v1.0.0 -m '初期リリース'
# 3. タグ一覧を表示(この時点ではリモートリポジトリに反映されていない)
$ git tag
v1.0.0
# 4. リモートリポジトリにプッシュ
$ git push origin v1.0.0
Enumerating objects: 1, done.
Counting objects: 100% (1/1), done.
Writing objects: 100% (1/1), 200 bytes | 200.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:teru2teru0/auto_release_note.git
* [new tag] v1.0.0 -> v1.0.0
タグ付け完了しました。簡単ですね。
2番でのタグ作成ですが、特定のコミット番号に対してもタグ付けする場合は下の例のようにコミット番号を指定してタグ付けをします。
# 構文: git tag -a <タグ名> -m '<コメント>' <コミット番号>
例) git tag -a v1.0.0 -m '初期リリース' 0cfcb91
また、一度作成したタグは削除、更新しないようにしてください。もし削除などをしたい場合は下記のQ&Aを参考にして下さい。
【Q&A】タグを間違えて作成してしまったときは?
タグを間違えて作成してしまったときは、下記コマンドにてタグを削除することができます。
# ローカルのタグ削除
git tag -d <タグ名>
# リモートリポジトリのタグ削除
git push origin -d <タグ名>
【Q&A】(要注意)違うコミットにタグを付けてしまったので、別コミットに再タグ付けしたい
ローカルのタグ(プッシュしていないタグ)を更新したい場合は、下記コマンドで上書きすることができます。
# ローカルのタグを別コミットに上書き
git tag -f <タグ名> <新しくタグをつけるコミット番号>
# 注釈も変更したい場合はこのようにする
git tag -a -f <タグ名> -m '<コメント>' <新しくタグをつけるコミット番号>
リモートリポジトリのタグを上書きするのは非推奨ですので、よほどの理由がない時には、別名を使用して対象コミットにタグ付けをしましょう。
そもそもタグはユニークで信頼されるべきものです。何度も変更されてしまってはセキュリティ的にやばいですからね…
どうしても、どうしても再タグ付けをしたい場合は、-f
を付けて強制的にプッシュします。
# 強制プッシュで再タグ付け
git push -f <タグ名>
この上書きは自分だけに反映されるため、チーム開発している場合は他の方々に対して「一度タグを削除してfetchしてください。その後正しいtagが取得できたかどうか確認してください。」と連絡して、やっとタグが反映されます。
# 別の人のリポジトリ内、自分のところにあるタグを削除してfetchで取り込む
git tag -d <タグ名>
git fetch origin tag <タグ名>
# 全員の環境で確認し、最新のタグかどうかハッシュ値で確認
git rev-parse <タグ名>
面倒な方法ですが、マニュアルページにも怨念のようなかなり強めのメッセージで記載してあります。
きちんと確認してからタグ付けを行いましょう。
参考:https://qiita.com/growsic/items/60928fc67c9efe373a73
GitHubからリリースノートを作成する
さて次に、GitHubのサイトで対象のリポジトリを開きます。
下の画像の赤枠にある Releases の部分に「1 tags」という表示が現れており、タグがきちんとリモートリポジトリに作成されているのが確認できます。
タグ確認ができたら、「Create a new release」を押して、リリースノートを記載できる画面に遷移します。
下のような画面が出てきます。
赤枠の「Choose a tag」を押すと、リリースノートを作成する対象となるタグ一覧が表示されます。
今回は v1.0.0 のタグを選択します。
タグを選択すると、右側中央にある「Generate release notes」というボタンが活性化します。
こちらを押すと、リリースノートを自動生成してくれます。
ちなみに、自動生成ボタンの隣にある「Previous tag : auto」は、指定したタグよりも以前のタグを選択することができます。
選択すると、前回のタグとの差分だけをリリースノートに記載することができます。
例えば、様々な変更を行い v1.0.1 というタグを付けてリリースノートを作成するとき、Previous tagに 前回のタグ(v1.0.0)を指定すると、タグ同士の間に出されたプルリクエストだけをリリースノートに記載することができます。
差分情報をリリースノートに載せることができるので便利です。
さて、生成された文章で問題なさそうでしたら、「Publish release」を押してリリースノート作成完了です!
生成したリリースノートを見ると下の画像のように表示されます。これを自動生成してくれるなんて便利になったもんですねぇ。
作成したリリースノートのリンクはこちら
タグコマンドとぽちぽちボタンを押すだけでリリースノートが自動生成できました!
もっとカスタマイズしたいという方は下記の記事などを参考にしてみてください。
参考1:GitHub – 自動生成リリース ノート
参考2:リリースノート自動生成テクニック
まとめ
今回はGitHub GUIでリリースノートを自動生成しました。GUIからだけでなく、GitHubが提供しているAPIからでもリリースノートを自動生成することができます。
ここでは詳しくは説明しませんので、気になる方は API仕様書 をご覧ください。
蛇足ですが、git tag
は意外と便利でして、チェックアウトの時にはブランチではなくタグを指定してチェックアウトできたり、git log
コマンドを利用するとタグ付けしたコミットをハイライト表示してくれたりしてくれます。
これを機に git tag
をたくさん使用してみてください。
この記事が誰かの役に立てますように。
コメントを書く