コンテンツにスキップ

リリース作業

上級者

テスト済みのビルドをリリースにします。このページはメンテナー向けです。

  • テストのチェックがすべて通っていること。エンドツーエンドの全体実行と、長時間の実行、障害の実行も含みます。
  • CHANGELOG.md に新しいバージョンが入っていること。
  • リリーススクリプト用に Python 3 がインストールされていること。
  1. releases/notes-<version>.toml を書きます。たとえば releases/notes-1.0.0.toml です。リリースノートのファイルを参照してください。

  2. チェックします:

    Terminal window
    python deploy/release/notes.py 1.0.0 --check

    エラーが表示されなければ問題ありません。禁止されている語、em ダッシュ、日付、公開予告の文言、ハイライトの issue の重複があると、終了コード 1 で終わります。

  3. リリース用のテキストを作ります:

    Terminal window
    python deploy/release/notes.py 1.0.0

    releases/out/1.0.0/ に 7 つのファイルができます。

  4. イメージをビルドし、新しい設定フォルダーで起動します:

    Terminal window
    docker build --file deploy/Dockerfile .

    初回セットアップのウィザードが表示されます。

  5. テストのチェックをすべて自分のマシンで実行します。テストは GitHub 上ではなく、ローカルで実行します。

  6. バージョンをメンテナーに引き渡します。メンテナーが main にバージョンタグを push すると、リリースが始まります。

バージョンとタグの名前

バージョンとタグの名前 へのリンク
対象 名前
Git タグ(メンテナーが push) 1.0.0(数字のみ、v なし)
イメージタグとノートの version 1.0.0

ワークフローは X.Y.Z 形式のタグでだけ始まり、タグが VERSION ファイルと違う場合は停止します。

各リリースは、そのバージョンタグと :latest を push します。

  1. 修正を入れた次のバージョンを push します。
  2. アップデートリストで問題のあるバージョンに印を付け、インストール済みの環境に提示されないようにします。
  3. タグは残します。

症状。 notes.py --check が終了コード 1 で終わる。 原因。 ノートのファイルがルールに違反しています。メッセージに行が出ています。 対処。 ノートのファイルを編集し、もう一度実行します。releases/out 内のファイルは編集しません。

症状。 ワークフローが VERSION says で停止する。 原因。 タグと VERSION ファイルが違っています。 対処。 main の VERSION を直し、次のバージョンタグを push します。

リリースノートのファイル

リリース用のテキストはすべて 1 つのファイルから作られます。作られたものを手で編集してはいけません。

フィールド 内容
version X.Y.Z のみ
theme 1 行
images {registry, name} のリスト。Docker Hub の holyarrs/holyarrs のみ
docs_url 任意。空の場合は Docs リンクなし
[[highlights]] ちょうど 3 つ。それぞれに line、issues、shot があります。ここに書いた issue は、グループの行には出しません
[groups] 場所ごとの行。既定は New です。それ以外は Changed: 、Fixed: 、Docs: で始めます。各行は (#46) のように issue で終わります。行が 3 つ未満の場所は Also new の下に入ります
任意 [before_you_update](breaking、manual_steps、backup、rollback)、security、known_issues、credits、[stats]。空の部分は表示されません

GitHub のログイン名は、ノートのファイルか releases/credits-map.json で分かっている場合にだけ使います。

本文の順序: theme、Highlights、場所(Requests、Library、Downloads、Indexers、Accounts、Health、Setup、Install)、Also new、Security、Known issues、Before you update、Image、Thanks、stats の行。

releases/out/<version>/ 内の出力 用途
changelog.md 変更履歴のエントリ
github.md GitHub リリースの本文
update-notes.json アプリが表示するノート
reddit.txt Reddit の投稿
discord-dm.txt, discord-announce.md Discord。どちらも 1,000 文字未満に収めます
roadmap-card.json ロードマップのカード

notes.py は --file(別のノートのファイル)、--map(別のクレジットマップ)、--out(別の出力フォルダー)、--date を受け取ります。--check は長い行と、ほぼ同じ内容の繰り返しに警告を出します。

イメージのワークフロー

HolyArrs - Release ワークフローは、バージョンタグが push されると始まります。ステップは 3 つです:

  1. linux/amd64、linux/arm64、linux/arm/v7 用のイメージをビルドし、バージョンタグと latest を付けて push します。
  2. README.md から Docker Hub の説明を更新します。
  3. このバージョンの CHANGELOG.md のセクションを使って GitHub リリースを公開します。
アップデートリスト

アプリは署名付きのアップデートリストを読みます。各リリースは自分のエントリを追加し、署名します。署名用のキーをリポジトリに入れることはありません。HolyArrs は検証できないリストを拒否します。

リリース後は、イメージのバージョンラベルがタグと一致していることを確認し、最初の 1 日は新しい issue を見ておきます:

Terminal window
docker inspect --format '{{ index .Config.Labels "org.opencontainers.image.version" }}' holyarrs
Unraid のテスト用テンプレート

deploy/release/nas-template.py は、特定の 1 つのイメージに対する Unraid のユーザーテンプレートを書き出します。pull、インストール、公開は一切行いません。

Terminal window
python deploy/release/nas-template.py --image 'holyarrs/holyarrs@sha256:<digest>' --config '/mnt/<pool>/appdata/holyarrs-test' --movies /mnt/user/holyarrs-test-data/movies --downloads /mnt/user/holyarrs-test-data/downloads --port 6262 --output holyarrs-test.xml

<digest> と <pool> を置き換えます。

フラグ 補足
--image レジストリのマニフェストダイジェスト。Docker のイメージ ID ではありません
--config プールのパス。/mnt/user と /mnt/user0 はツールが拒否します
--movies, --tv, --music, --downloads 任意。別々のパスは別々のマウントになるため、インポートはコピーになります
--port 既定値は 6262
--allowed-hosts 任意。カンマ区切りのホスト名
--output 書き出す XML ファイル

テンプレートは PUID=99、PGID=100、UMASK=022 を設定します。そのアカウントに、テスト用メディアへの書き込み権限を付けてください。ファイルを /boot/config/plugins/dockerMan/templates-user/ に置き、Docker > Add Container > Template(Docker > コンテナを追加 > テンプレート)で選びます。

HolyArrs は無料です。時間の節約になったら、GitHub でスターを付ける、スポンサーになる、コーヒーをおごるのいずれかで応援してください。