リリースの手順

  1. リリース作業の開始
  2. RC作成とその後
  3. リリース作業
  4. コードフリーズについて

TeraTerm Project でのリリース手順について以下に示します。

リリース作業の開始

  1. チケット、ブランチなどを確認する
  2. ツール、ライブラリ、インポート元の最新版をチェックする

    リリースビルドには CI ツールを使っているため、Visual Studio の詳細バージョンはコントロールできない。どのバージョンになるかは、ビルド時点で CI ツールがどのバージョンを採用しているかに左右される。

    リリースに使うライブラリのバージョンはこの時点でおおむね決定する。

    安定版リリースでは、ライブラリは元になった定期リリースから更新しない。(ライブラリにセキュリティ修正がある場合は個別に検討する。)

  3. 今回のリリースに入れたいものが落ち着く

RC 作成とその後

  1. RC 作業ブランチを作成する(main ブランチ、または安定版リリース用ブランチから)
    git switch main
    git pull --rebase
    git checkout -b release/5_4_0-RC
    
  2. ドキュメントを確認する
  3. この年における最初のリリースの場合は、著作権表示の「最後の発行の年」をインクリメントする
  4. バージョンをインクリメントする
  5. インストーラを作成する(確認用)
  6. サポートされている全 OS でインストーラの実行、起動、接続をチェックする
  7. コミット、push する
  8. 作業ブランチをマージするための Pull Request を作成する
  9. Pull Request をマージする(main ブランチ、または定期リリース用ブランチへ)
  10. GitHub Actions で workflow が実行されてビルドされる
    ビルドは3回実行されます: RC の作成では「マージコミットによるビルドバイナリ」を RC 成果物とします。
  11. RCの作成をアナウンスする
  12. 作業ブランチを削除する
  13. フィードバックを受け入れる
    修正が入ったら再度「ドキュメントを確認する」「サポートされている全 OS で起動・接続チェックする」
  14. RC2 を出す場合は、この項目の手順を作業ブランチの作成から再度行う

リリース作業

  1. アナウンス文面を考えておく
  2. 作業ブランチを作成する(main ブランチ、または安定版リリース用ブランチから)
    git switch main
    git pull --rebase
    git checkout -b release/5_4_0
    
  3. ドキュメントを確認する (詳細は同上)
  4. リリース日を変更する
  5. "RC" を削除する
  6. インストーラを作成する(確認用)

    ビルド・インストーラの生成がエラーなくできることを確認する。

  7. コミット、push する *
  8. 作業ブランチをマージするための Pull Request を作成する *
  9. Pull Request をマージする(main ブランチ、または定期リリース用ブランチへ) *
  10. タグを作成し、push する *

    タグは annotated tags とする。
    タグ名は「v(バージョン)」。(例: 5.4.0ならば "v5.4.0" )

    git switch main
    git pull --rebase
    git tag -a v5.4.0 -m "Release 5.4.0"
    git push origin v5.4.0
    
  11. GitHub Actions で workflow が実行されてビルドされる
    ビルドは4回実行されます: リリースでは「タグの作成によるビルドバイナリ」をリリース成果物とします。
    リリース時に workflow は SignPath にコード署名をリクエストしますが、SignPath の release-signing ポリシーは手動で承認が必要です。そのため workflow は途中で署名リクエストが承認されるのを待ちます。したがって、SignPath.io にログインしておき、署名リクエストを Approve します。
  12. 作業ブランチを削除する
  13. GitHub の Releases に追加する
  14. ウイルス対策ソフトの検知を確認する
  15. プロジェクトWebページ (https://teratermproject.github.io) を更新する

    更新のしかたは プロジェクトページの更新手順 を参照

  16. リリースをアナウンスする
  17. 安定版ブランチを作成する(定期リリースの場合のみ)
    git switch main
    git pull --rebase
    git checkout -b stable_5_4
    
  18. 次のリリースに向けてバージョンをインクリメントする

    定期リリースの場合

    安定版リリースの場合

  19. 変更履歴を修正する(安定版リリースの場合のみ)
  20. GitHub の Milestones を調整する(定期リリースの場合のみ) 安定版リリースのマイルストーンは作成しません。
  21. インストーラバイナリのダウンロードに関する確認をする

    ダウンロードしたファイルを実行すると、SmartScreen が「WindowsによってPCが保護されました」という警告を出すことがある。
    これが解消されないと、窓の杜はインストーラを掲載しない。

    Microsoft Edge でダウンロードすると、SmartScreen が「一般的にダウンロードされていません」という警告を出す。

    ウイルス対策ソフトが誤検出することがある。
    keycode.exe がキーロガーとして検出されやすいらしい。

    Microsoft には誤検出の申し立てができる。「PCが保護されました」の解消のため報告する。

  22. Chocolatey の登録を更新する

    ウイルス対策ソフトに検出されている状態だと push したバイナリが公開差し止めになることがある。

    同じバージョンを複数回 push できないようなので、push 作業をミスることができない。

    現在 teraterm5 パッケージは reject されている。

コードフリーズについて

コードフリース中は、原則的には致命的なバグの修正のみ可能となります。
コードフリーズは、RC作成(teraterm.iss に RC を付けるコミット)から(バージョンをインクリメントするコミット)までとします。