Skip to content

ci(release): trigger release.yml via GitHub App token - #87

Open
SoulKyu wants to merge 1 commit into
mainfrom
ci-release-app-token
Open

ci(release): trigger release.yml via GitHub App token#87
SoulKyu wants to merge 1 commit into
mainfrom
ci-release-app-token

Conversation

@SoulKyu

@SoulKyu SoulKyu commented Jun 25, 2026

Copy link
Copy Markdown
Member

Problème

Après merge d'une PR release-please, le tag vX.Y.Z + la GitHub Release sont créés, mais le workflow Release (build/push image Docker, cosign, trivy, retag stable, charts) ne se déclenche jamais. L'image n'est donc jamais publiée (constaté sur v3.2.4).

Cause racine

release-please.yml poussait le tag avec secrets.GITHUB_TOKEN. GitHub bloque volontairement la cascade : un event produit par le GITHUB_TOKEN par défaut ne crée pas de nouveau run (anti-récursion). Donc le push du tag n'armait pas le trigger on: push: tags de release.yml. L'équipe contournait jusqu'ici via workflow_dispatch manuel.

Fix

Minter un GitHub App token (actions/create-github-app-token@v1) et le passer à release-please-action à la place de GITHUB_TOKEN. Un token d'App est une identité distincte → le push du tag déclenche release.yml normalement.

  • release.yml inchangé : trigger on: push: tags et identité cosign keyless (refs/tags/v*) préservés.
  • regen-helm-docs reste sur GITHUB_TOKEN (push sur branche de PR, pas de cascade tag requise).

⚠️ Prérequis avant merge (secrets)

Créer/réutiliser une GitHub App (perms repo Contents: write + Pull requests: write), l'installer sur le repo, et ajouter 2 secrets :

  • RELEASE_APP_ID
  • RELEASE_APP_PRIVATE_KEY

Sans ces secrets, le step app-token échouera.

Vérification post-merge

  1. Merger cette PR → release-please tourne avec le token d'App.
  2. Couper la prochaine release (les fixes token-leak de v3.2.4 sont déjà sur main) → vérifier qu'un run Release démarre automatiquement : gh run list --workflow=release.yml.
  3. docker pull ghcr.io/numberly/vault-db-injector:<vX.Y.Z> + tag :latest.
  4. cosign verify avec l'identité release.yml@refs/tags/v* doit passer.

release-please pushed the release tag with the default GITHUB_TOKEN.
GitHub does not start new workflow runs from GITHUB_TOKEN-triggered
events (anti-recursion), so release.yml (on: push: tags) never fired and
the Docker image was never built/pushed. Mint a GitHub App token and use
it for release-please so the tag push is a distinct identity that
triggers release.yml. release.yml is unchanged: the tag trigger and the
cosign keyless identity (refs/tags/v*) are preserved.

Requires repo/org secrets RELEASE_APP_ID and RELEASE_APP_PRIVATE_KEY
from a GitHub App with Contents:write + Pull requests:write.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant