chore: 週次の image-update-and-release.yaml を削除
追従すべき上流イメージが存在しないチャートのため、Docker Hub 等の 更新チェックを行う週次ワークフローに意味が無いと判断し削除。 リリースは push トリガの helm-release.yaml(未公開バージョンのときだけ リリース)の1本に一本化。README.md / CLAUDE.md からも該当記述を除去し、 組織ルールに対する例外として CLAUDE.md に明記した。
This commit is contained in:
@@ -1,188 +0,0 @@
|
||||
# .gitea/workflows/image-update-and-release.yaml
|
||||
# -------------------------------------------------------------------------
|
||||
# 週次の自動更新 & リリース ワークフロー(毎週月曜 3:00 AM / JST 12:00 PM)。
|
||||
#
|
||||
# ■ 他チャートとの違い
|
||||
# phpfpm / n8n などは「Docker Hub の上流イメージ最新版」を毎週チェックし、
|
||||
# 更新があれば values.yaml / Chart.yaml のバージョンを上げてリリースする。
|
||||
# secret-manager は Secret を生成するだけで **追従すべき上流イメージが無い**
|
||||
# ため、バージョンの自動採番は行わない(バージョンは常に手動で Chart.yaml
|
||||
# を更新する)。
|
||||
#
|
||||
# ■ このワークフローの役割
|
||||
# 1. (将来用)追従対象が増えたときに上流チェックを追加する場所を用意する
|
||||
# (下部のコメントアウト済みサンプルを参照)。
|
||||
# 2. リリースの取りこぼし対策 — Chart.yaml の version が Package Registry に
|
||||
# 未公開なら、週次でリリースを実行する(push トリガの helm-release.yaml が
|
||||
# レジストリ障害等で失敗していた場合のセーフティネット)。
|
||||
# -------------------------------------------------------------------------
|
||||
name: Weekly Update and Release
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 3 * * 1' # 毎週月曜 3:00 AM UTC(JST 12:00 PM)
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
REGISTRY_URL: https://git.cafepieters.com
|
||||
OWNER: helmchart
|
||||
|
||||
jobs:
|
||||
update-and-release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install Helm
|
||||
uses: azure/setup-helm@v3
|
||||
with:
|
||||
version: 'v3.12.0'
|
||||
|
||||
- name: Ensure jq
|
||||
run: |
|
||||
command -v jq >/dev/null 2>&1 || { apt-get update -qq && apt-get install -y -qq jq; }
|
||||
jq --version
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# ▼▼▼ 将来、追従対象(イメージ / サブチャート等)が増えたらここに追加 ▼▼▼
|
||||
#
|
||||
# 例: 上流コンテナの最新タグを Docker Hub から取得して values.yaml を書き換え、
|
||||
# 必要なら Chart.yaml の version / appVersion も更新する。
|
||||
#
|
||||
# - name: Check upstream image
|
||||
# id: upstream
|
||||
# run: |
|
||||
# set -e
|
||||
# CURRENT=$(grep 'tag:' values.yaml | head -1 | sed 's/.*tag: *"\([^"]*\)".*/\1/')
|
||||
# LATEST=$(curl -s "https://registry.hub.docker.com/v2/repositories/<repo>/tags?page_size=100" \
|
||||
# | jq -r '.results[].name' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | sort -V | tail -1)
|
||||
# echo "current=$CURRENT" >> $GITHUB_OUTPUT
|
||||
# echo "latest=$LATEST" >> $GITHUB_OUTPUT
|
||||
#
|
||||
# - name: Apply update
|
||||
# if: steps.upstream.outputs.current != steps.upstream.outputs.latest
|
||||
# run: |
|
||||
# set -e
|
||||
# sed -i "s/tag: \"${{ steps.upstream.outputs.current }}\"/tag: \"${{ steps.upstream.outputs.latest }}\"/" values.yaml
|
||||
# sed -i "s/^version: .*/version: ${{ steps.upstream.outputs.latest }}/" Chart.yaml
|
||||
# sed -i "s/^appVersion: .*/appVersion: \"${{ steps.upstream.outputs.latest }}\"/" Chart.yaml
|
||||
# git config user.name "Claude"; git config user.email "claude@cafepieters.com"
|
||||
# git add values.yaml Chart.yaml
|
||||
# git commit -m "chore: update upstream to ${{ steps.upstream.outputs.latest }}"
|
||||
# git push origin main
|
||||
#
|
||||
# ▲▲▲ ここまで ▲▲▲
|
||||
# -------------------------------------------------------------------
|
||||
|
||||
- name: Get chart info
|
||||
id: info
|
||||
run: |
|
||||
set -e
|
||||
CHART_NAME=$(grep '^name:' Chart.yaml | head -1 | sed 's/^name:[[:space:]]*//; s/"//g; s/[[:space:]]*$//')
|
||||
CHART_VERSION=$(grep '^version:' Chart.yaml | head -1 | sed 's/^version:[[:space:]]*//; s/"//g; s/[[:space:]]*$//')
|
||||
echo "name=${CHART_NAME}" >> $GITHUB_OUTPUT
|
||||
echo "version=${CHART_VERSION}" >> $GITHUB_OUTPUT
|
||||
echo "Chart: ${CHART_NAME} v${CHART_VERSION}"
|
||||
|
||||
- name: Validate chart
|
||||
run: helm lint --strict .
|
||||
|
||||
- name: Check whether this version is already released
|
||||
id: check
|
||||
run: |
|
||||
set -e
|
||||
NAME="${{ steps.info.outputs.name }}"
|
||||
VERSION="${{ steps.info.outputs.version }}"
|
||||
|
||||
helm repo add cafepieters "${REGISTRY_URL}/api/packages/${OWNER}/helm" \
|
||||
--username "${{ secrets.REGISTRY_USER }}" \
|
||||
--password "${{ secrets.REGISTRY_TOKEN }}" >/dev/null 2>&1 || true
|
||||
helm repo update cafepieters >/dev/null 2>&1 || true
|
||||
|
||||
FOUND=$(helm search repo "cafepieters/${NAME}" --version "${VERSION}" --output json 2>/dev/null | jq 'length' 2>/dev/null || echo 0)
|
||||
echo "Registry entries for ${NAME} ${VERSION}: ${FOUND}"
|
||||
|
||||
if [ "${FOUND:-0}" -gt 0 ]; then
|
||||
echo "release_needed=false" >> $GITHUB_OUTPUT
|
||||
echo "✅ v${VERSION} は公開済み。リリース不要。"
|
||||
else
|
||||
echo "release_needed=true" >> $GITHUB_OUTPUT
|
||||
echo "🆕 v${VERSION} が未公開。週次リリースを実行します。"
|
||||
fi
|
||||
|
||||
- name: Package chart
|
||||
if: steps.check.outputs.release_needed == 'true'
|
||||
run: |
|
||||
set -e
|
||||
helm package .
|
||||
CHART_FILE=$(ls "${{ steps.info.outputs.name }}"-*.tgz | head -1)
|
||||
echo "CHART_FILE=${CHART_FILE}" >> $GITHUB_ENV
|
||||
echo "Packaged: ${CHART_FILE}"
|
||||
|
||||
- name: Publish to Gitea Package Registry
|
||||
if: steps.check.outputs.release_needed == 'true'
|
||||
run: |
|
||||
set -e
|
||||
curl --fail-with-body \
|
||||
-u "${{ secrets.REGISTRY_USER }}:${{ secrets.REGISTRY_TOKEN }}" \
|
||||
-X POST \
|
||||
--upload-file "${CHART_FILE}" \
|
||||
"${REGISTRY_URL}/api/packages/${OWNER}/helm/api/charts"
|
||||
echo "✅ Published ${CHART_FILE} to Package Registry"
|
||||
|
||||
- name: Create Git tag
|
||||
if: steps.check.outputs.release_needed == 'true'
|
||||
run: |
|
||||
set -e
|
||||
VERSION="${{ steps.info.outputs.version }}"
|
||||
git config user.name "Claude"
|
||||
git config user.email "claude@cafepieters.com"
|
||||
if git rev-parse "v${VERSION}" >/dev/null 2>&1; then
|
||||
echo "Tag v${VERSION} already exists, skipping"
|
||||
else
|
||||
git tag -a "v${VERSION}" -m "Release ${VERSION}"
|
||||
git push origin "v${VERSION}"
|
||||
echo "Git tag v${VERSION} created"
|
||||
fi
|
||||
|
||||
- name: Create Gitea Release
|
||||
if: steps.check.outputs.release_needed == 'true'
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
run: |
|
||||
set -e
|
||||
VERSION="${{ steps.info.outputs.version }}"
|
||||
NAME="${{ steps.info.outputs.name }}"
|
||||
PACKAGE_FILE="${NAME}-${VERSION}.tgz"
|
||||
|
||||
EXISTING=$(curl -s -H "Authorization: token ${GITEA_TOKEN}" \
|
||||
"${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases/tags/v${VERSION}" | jq -r '.id // empty')
|
||||
|
||||
if [ -n "${EXISTING}" ]; then
|
||||
echo "Release v${VERSION} already exists (id=${EXISTING}), skipping"
|
||||
else
|
||||
RELEASE_ID=$(curl -s -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"tag_name\":\"v${VERSION}\",\"name\":\"v${VERSION}\",\"body\":\"secret-manager Helm Chart v${VERSION}(週次リリース)\"}" \
|
||||
"${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases" | jq -r '.id')
|
||||
|
||||
curl -s -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/gzip" \
|
||||
--data-binary "@${PACKAGE_FILE}" \
|
||||
"${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets?name=${PACKAGE_FILE}"
|
||||
|
||||
echo "Gitea release v${VERSION} created with asset ${PACKAGE_FILE}"
|
||||
fi
|
||||
|
||||
- name: Summary
|
||||
run: |
|
||||
if [ "${{ steps.check.outputs.release_needed }}" = "true" ]; then
|
||||
echo "✅ Weekly release done: secret-manager v${{ steps.info.outputs.version }}"
|
||||
else
|
||||
echo "ℹ️ Nothing to do: v${{ steps.info.outputs.version }} already published."
|
||||
fi
|
||||
Reference in New Issue
Block a user