Open9

リリースフローを考える

shuhei aoyamashuhei aoyama

通常リリース

  • 参考にした記事と同様に、include-pathsとtag-prefixで対応できる。
  • prerelease扱いにしてステージング向けとするのがよさそう。
  • 本番へのリリースは「prereleaseを外す」の更新
  • ちゃんとやるならprereleaseと本リリースをわけてタグを打つ。(vX.Y-rc)
  • auto labelerとの連動は現状不要。categoriesによるリリースノートグルーピングはあってもよい。

デプロイ

  • 本番:releaseのreleasedイベントを使ったGitHub workflowでデプロイ
  • ステージング:releaseのprereleasedイベントを使ったGitHub workflowでデプロイ
  • どちらも releaseオブジェクト のprereleaseをみるのが安全。
shuhei aoyamashuhei aoyama

バージョン指定はversion-templateを使う。

version-template: '$MAJOR.$MINOR'

タグとリリースタイトルはあわせておくほうがよさそう

name-template: package-a-v$RESOLVED_VERSION
tag-template: package-a-v$RESOLVED_VERSION
shuhei aoyamashuhei aoyama

ステージングでのcherry-pick

  • チェック中に見つかった問題への対応

手順

  • master向けに修正PRをマージ ---- ①
  • prereleaseタグに対してcherry-pick
  • タグを新規に追加(${tagName}-2とか)
  • prereleaseに指定されているタグを↑に置き換え
    • このときrelease-drafterを挟めない(pushがない)ので、手動で①をリリースノートに入れる
shuhei aoyamashuhei aoyama

hotfixリリース

  • 本番で見つかった緊急不具合への対応

手順

  • master向けに修正PRをマージ ---- ①
  • 最新のリリースタグに対してcherry-pick
  • タグを新規に追加(${tagName}-hotfixとか)
  • ↑のタグを使ってドラフトリリースを作成
    • このときrelease-drafterを挟めない(pushがない)ので、手動で①をリリースノートに入れる
  • あとは通常リリースフロー
shuhei aoyamashuhei aoyama

gh release create --prerelease --notes-from-tag -t package-a-v2.104-hotfix-1 package-a-v2.104-hotfix-1

shuhei aoyamashuhei aoyama

最後のリリースからの作成PRをみてるのでPR一覧がおかしくなる。
tag-prefix外にしてみるとか。

gh release create --prerelease --notes-from-tag -t hotfix-package-a-v2.104.1 hotfix-package-a-v2.104.1

shuhei aoyamashuhei aoyama

手順まとめ

  • masterマージ後
  • git checkout ${tag}
  • git cherry-pick ...
  • git tag hotfix-${tag}-1
  • git push origin hotfix-${tag}.1
  • gh release create --prerelease --notes-from-tag -t hotfix-${tag}.1 hotfix-${tag}.1
shuhei aoyamashuhei aoyama

リリース(prereleasからreleaseに変更)時にDraftが更新されないので、releaseイベントでもrelease-drafterを動かしたほうがよさそう。