自動更新・リリースワークフローを2本体制に整備
Helm Chart Release / release-chart (push) Successful in 7s

他チャート(phpfpm/n8n)を参照し、リリース自動化を実装。

- helm-release.yaml(push トリガ): 「毎 push 無条件公開」から
  「Chart.yaml の version が Package Registry に未公開のときだけリリース」に変更。
  helm search repo --version で存在確認し、未公開時のみ
  Package Registry 発行 + Git タグ v<version> + Gitea リリース(tgz 添付)を実施。
  paths フィルタで Chart.yaml/values.yaml/values.schema.json/templates/** 変更時のみ発火。
  helm lint --strict でスキーマ検証。
- image-update-and-release.yaml(週次 月曜03:00 UTC): 新設。
  このチャートは Secret を生成するだけで追従すべき上流イメージが無いため
  バージョン自動採番はしない。push 側がレジストリ障害等で取りこぼした
  未公開バージョンを週次でリリースするセーフティネットとして動作。
  将来サブチャート等の追従対象が増えたときの追加ポイントをコメントで用意。
- タグ/リリース作成は既存なら skip(冪等)。jq 未導入環境向けのガードを追加。
- README.md / CLAUDE.md に自動化ワークフローの節を追加
This commit is contained in:
2026-09-03 10:29:53 +09:00
parent f374cd2e49
commit 257699fbff
4 changed files with 375 additions and 73 deletions
+28 -2
View File
@@ -30,6 +30,7 @@ Secret として配布** します。
- [他プロジェクトからの参照方法](#他プロジェクトからの参照方法)
- [代表的なメールプロバイダの設定値](#代表的なメールプロバイダの設定値)
- [変更の反映(伝播)とライフサイクル](#変更の反映伝播とライフサイクル)
- [自動化ワークフロー(Gitea Actions)](#自動化ワークフローgitea-actions)
- [reflector / Reloader 連携](#reflector--reloader-連携)
- [トラブルシューティング](#トラブルシューティング)
@@ -307,6 +308,29 @@ distribution:
が付きます。参照側 Deployment に `reloader.stakater.com/auto: "true"` を付けておくと、
Secret 更新時に自動でローリング再起動されます。
## 自動化ワークフロー(Gitea Actions)
`.gitea/workflows/` に 2 本の CI がある。どちらも「`Chart.yaml` の `version` が
Package Registry に未公開のときだけリリースする」方式で、リリース内容は
**Package Registry への発行 + Git タグ `v<version>` + Gitea リリース(`.tgz` 添付)**。
| ワークフロー | 契機 | 動作 |
|---|---|---|
| `helm-release.yaml` | `main` への push(`Chart.yaml` / `values.yaml` / `values.schema.json` / `templates/**` 変更時)、手動実行 | `helm lint --strict` → 現在の `version` が未公開ならリリース。公開済みなら何もしない(README・examples だけの変更ではリリースされない)。 |
| `image-update-and-release.yaml` | 毎週月曜 03:00 UTC(JST 12:00)、手動実行 | 週次のセーフティネット。push 側がレジストリ障害等で取りこぼしていた場合に、未公開バージョンを週次でリリースする。 |
> **上流イメージの自動追従はしない** — 他チャート(phpfpm・n8n 等)の
> `image-update-and-release.yaml` は Docker Hub の最新イメージを取得してバージョンを
> 自動採番するが、secret-manager は Secret を生成するだけで追従対象の上流イメージが
> 無いため、バージョンは常に手動で `Chart.yaml` を更新する。将来サブチャート等の
> 追従対象が増えた場合の追加ポイントは同ファイル内にコメントで用意してある。
新しいバージョンを出す手順: `Chart.yaml` の `version` と `appVersion` を上げて
`main` に push するだけ。あとは `helm-release.yaml` がリリースする。
必要な Gitea Secrets: `GITEA_TOKEN`(リリース・タグ)、`REGISTRY_USER` /
`REGISTRY_TOKEN`(Package Registry)。
## トラブルシューティング
| 症状 | 原因 / 対処 |
@@ -328,5 +352,7 @@ Secret 更新時に自動でローリング再起動されます。
- 初版。`distribution`(namespaces 複製 / reflector / reloader)、`common`、
`mail.providers`(SMTP/IMAP/POP3 + `smtp.env` + 任意 `msmtprc`)、`api.credentials`、
`generic.secrets`(任意 type)を実装。`values.schema.json`・`examples/`・
Gitea リリースワークフローを同梱。
`generic.secrets`(任意 type)を実装。`values.schema.json`・`examples/` を同梱。
- CI: `helm-release.yaml`(push 時・未公開バージョンのみリリース)と
`image-update-and-release.yaml`(週次リリースセーフティネット)を追加。
どちらも Package Registry 発行 + Git タグ + Gitea リリースまで実施。