kanade-client のアップデート
Tauri デスクトップクライアントは backend と同じやり方で端末に配布します: バイナリは OBJECT_APP_PACKAGES、スクリプトは OBJECT_SCRIPTS、ジョブは jobs KV。形は backend のアップデート と同じで、スクリプト内容とパッケージ名だけが違います。
backend のアップデートとの違い
| 項目 | kanade-backend | kanade-client |
|---|---|---|
| (再) 起動するサービス | KanadeBackend (Windows サービス) | なし — クライアントはユーザーが起動する |
| インストール先 | %ProgramFiles%\Kanade\kanade-backend.exe | %ProgramFiles%\Kanade\kanade-client.exe |
| リポジトリ内のスクリプト | scripts/deploy/backend.ps1 | configs/jobs/installers/scripts/install-kanade-client.ps1 (マニフェストの script_file パス) |
| マニフェストの参照方法 | script_object: deploy-backend/<v> | script_file: scripts/install-kanade-client.ps1 (マニフェスト YAML からの相対パス; kanade job create 時に inline 展開) |
| atomic swap のやり方 | サービス停止 → コピー → サービス起動 | <exe>.new にステージ → Move-Item → <exe>.old を削除 |
| インベントリへの射影 | なし (backend は自分自身でバージョンを報告) | inventory: ブロックが PC ごとのクライアントバージョンを SPA Inventory ページに出す |
両方の形が使えます —
script_object(OBJECT_SCRIPTS から hash で参照、agent が必要時に fetch) とscript_file(kanade job create時にスクリプト本体をマニフェストに inline 展開)。client マニフェストは歴史的経緯でscript_file、backend マニフェストは Object Store パスをテストするためにscript_objectに書き換えられました。
ステップごとの手順
1. kanade-client をビルド
cargo build --release -p kanade-client
出力: target/release/kanade-client.exe。
2. バイナリを publish
kanade app publish kanade-client 0.42.0 target/release/kanade-client.exe
3. configs/jobs/installers/scripts/install-kanade-client.ps1 を編集
先頭の 3 つのノブをセット:
$BackendBase = 'http://kanade-backend.example.com:8080'
$Version = '0.42.0'
$ExpectedSha256 = '<kanade-client.exe の lowercase hex>'
backend auth が有効なら
$ClientSourceAuthTokenを backend の bearer にセットしてください — agent が/api/*に使うのと同じトークンです。/api/app-packages/kanade-client/<v>ルートが認証なしの dev / smoke-test 環境では空のままで OK。scripts/deploy/backend.ps1 の$AgentSourceAuthTokenノブと同じ形です。
4. ジョブを登録 / 更新
configs/jobs/installers/install-kanade-client.yaml:
id: install-kanade-client
version: 0.42.0
execute:
shell: powershell
script_file: scripts/install-kanade-client.ps1 # `job create` 時に inline 展開 (マニフェスト YAML からの相対パス)
timeout: 180s
run_as: system
require_approval: true
inventory:
display:
- { field: version, label: Version }
- { field: path, label: Install path }
summary:
- { field: version, label: Client version }
kanade job create jobs\install-kanade-client.yaml
inventory:ブロックは projector に「スクリプトの stdout は単一の JSON blob で、version/pathフィールドが SPA の Inventory ページに反映される」と伝えます。operator は fleet 全体のテーブルから取り残し端末を見つけられ、ssh は不要です。
5. 起動
kanade exec install-kanade-client --pcs <host> [--pcs <host> …]
もしくはグループ単位で:
kanade exec install-kanade-client --groups office
6. SPA で確認
SPA の Inventory ページを開く (もしくは /api/inventory?app=kanade-client を叩く) と、対象ホストが新しいバージョンを報告しているはずです。