リリースの手順

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

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

リリース作業の開始

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

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

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

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

RC作成とその後

  1. ドキュメントを確認する
  2. バージョンをインクリメントする

    CygTerm+ は例外で、リリースとは関係なくバージョンが上がる。
    修正がコミットされると即リリース扱いになり、リリース日はその日付となる。そのため、修正・バージョンのインクリメント・変更履歴を同時にコミットする。
    これはコンパイラの入手が容易なため。

  3. この年における最初のリリースの場合は、著作権表示の「最後の発行の年」をインクリメントする
  4. インストーラを作成する(確認用)
  5. サポートされている全 OS でインストーラの実行、起動、接続をチェックする
  6. コミット・push する
  7. AppVeyor でビルドする

    AppVeyor の "github-main" プロジェクトを使用する。

  8. RCの作成をアナウンスする
  9. フィードバックを受け入れる

    修正が入ったら再度「ドキュメントを確認する」「サポートされている全 OS で起動・接続チェックする」

リリース作業

  1. ドキュメントを確認する (詳細は同上)
  2. "RC" を削除する
  3. リリース日を変更する
  4. インストーラを作成する(確認用)

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

  5. コミットする
  6. タグを作成し、push する

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

    git tag -a v5.4.0 -m "Release 5.4.0"
    git push origin v5.4.0
    
  7. インストーラを作成する

    AppVeyor の "github-release" プロジェクトを使用する。

  8. GitHub の Releases に追加する
  9. ウイルス対策ソフトの検知を確認する
  10. プロジェクトWebページ (https://teratermproject.github.io) を更新する

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

  11. リリースをアナウンスする
  12. 定期リリースの場合は、安定版ブランチを作成する
    git checkout -b stable_5_4
    
  13. 次のリリースに向けてバージョンをインクリメントする

    定期リリースの場合

    安定版リリースの場合

  14. インストーラバイナリのダウンロードに関する確認をする

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

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

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

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

  15. Chocolatey の登録を更新する

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

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

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

コードフリーズについて

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