自動更新・リリースワークフローを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
+35 -5
View File
@@ -29,14 +29,31 @@
そのため `Chart.yaml` の `version` / `appVersion` は **チャート独自に SemVer で採番**する。
(他チャートの「主アプリのバージョンと同一」ルールは適用対象外)
- 破壊的変更 = メジャー、機能追加 = マイナー、修正 = パッチ。
- 改修作業で臨時の手動リリースが必要な場合は末尾にアルファベットを付与する
(例: `0.2.0` → `0.2.0-a`)。
## リリースフロー
- `main` への push で `.gitea/workflows/helm-release.yaml` が発火し、
`helm lint` → `helm package` → Gitea Package Registry へ発行する。
- 正式リリース時は `Chart.yaml` のバージョンを上げ、Git タグと Gitea リリースも作成する。
新バージョンを出す手順は「`Chart.yaml` の `version` / `appVersion` を上げて `main` に push」だけ。
以降は CI が処理する。
### `.gitea/workflows/helm-release.yaml`(push トリガ)
- `main` への push(`Chart.yaml` / `values.yaml` / `values.schema.json` / `templates/**` 変更時)
および手動実行で発火。
- `helm lint --strict` → **現在の `version` が Package Registry に未公開のときだけ**
リリースする(`helm search repo --version` で存在確認)。
- 他リポジトリの「毎 push で無条件公開」する共通版とは意図的に異なる。README・examples
だけの変更で push してもリリースは発生しない。
- リリース内容 = Package Registry 発行 + Git タグ `v<version>` + Gitea リリース(`.tgz` 添付)。
タグ・リリースは既存なら skip(冪等)。
### `.gitea/workflows/image-update-and-release.yaml`(週次)
- 毎週月曜 03:00 UTC(JST 12:00)+ 手動実行。
- **上流イメージの自動追従はしない**(このチャートは Secret を生成するだけで
追従対象イメージが無い)。バージョンは常に手動で `Chart.yaml` を更新する。
- 役割は「push 側の取りこぼし対策」— `version` が未公開なら週次でリリースを実行する。
- 将来サブチャート等の追従対象が増えたときの追加ポイントは同ファイル内にコメントで用意済み。
### 手動リリース(臨時)
- 改修作業で臨時リリースが必要なら `version` 末尾にアルファベットを付与(例: `0.2.0` → `0.2.0-a`)。
## 必要な Gitea Secrets
@@ -74,6 +91,19 @@
## チャート改修履歴
### 自動更新・リリースワークフローの整備(2026-09-03, v0.1.0)
`.gitea/workflows/` を 2 本体制に。`helm-release.yaml` を「無条件公開」から
「未公開バージョンのみリリース」に変更(`helm search repo --version` で存在確認し、
未公開時のみ Package Registry 発行 + Git タグ + Gitea リリース)。`paths` フィルタで
`Chart.yaml`/`values.yaml`/`values.schema.json`/`templates/**` の変更時のみ発火。
`image-update-and-release.yaml` を新設(週次)。上流イメージが無いチャートのため
バージョン自動採番はせず、push 側の取りこぼし対策(未公開バージョンの週次リリース)
として動作。将来の追従対象追加用コメントブロックを同梱。
**対象ファイル**: `.gitea/workflows/helm-release.yaml`,
`.gitea/workflows/image-update-and-release.yaml`, `README.md`, `CLAUDE.md`
### 初版設計・実装(2026-08-31, v0.1.0)
空リポジトリから初期実装。`distribution`(namespaces 複製 / reflector / reloader)、