Skip to content

chore(release): skip beta, auto-merge backports and deduplicate CI - #109

Merged
enimaloc merged 3 commits into
devfrom
chore/ci-skip-beta
Nov 12, 2026
Merged

enimaloc merged 3 commits into
devfrom
chore/ci-skip-beta

Conversation

@enimaloc

Copy link
Copy Markdown
Owner

Pourquoi

Jusqu'à une éventuelle v2, on saute l'étape beta : les releases passent directement de dev à main. Les PR de report qui ramènent une release sur dev doivent se fusionner seules, et la CI lançait plusieurs jobs en double (push puis pull_request sur la même branche).

Changements

1. chore(release) : promotion directe dev → main

  • Nouveau .github/release/lib/flow.mjs : BETA = false décrit la chaîne de promotion (dev → main). Pour réactiver beta, il suffit de remettre BETA = true et de remettre beta dans les branches de push de promote.yml : les scripts et les conditions des workflows acceptent toujours les paires beta.
  • Version : dev → main prend le dernier stable incrémenté selon les commits conventionnels (nextDirectStable), sans tag -BETA.N. Prochaine release attendue : v1.2.0. Si une beta plus haute est encore en attente, sa cible est reprise.
  • ready.mjs traite dev → main comme un stable (bump de build.gradle.kts sur dev, auto-merge épinglé).
  • publish.mjs : après un stable ou un hotfix, le report se fait directement main → dev.
  • schedule.mjs : les sorties programmées concernent dev → main. --run prend la cible dans flow.mjs, et --target ne sert plus que de repli : l'ancienne copie de release-schedule.yml encore sur main (qui passe --target beta) reste donc correcte jusqu'à la prochaine release.
  • Le tableau de bord liste aussi les promotions dev → main.
  • Workflows : promote.yml (push sur dev uniquement, cible calculée par le script), release-ready.yml, release-schedule.yml, publish.yml et commitlint.yml (job ignoré sur dev → main et main → dev) acceptent la nouvelle paire.

2. chore(release) : auto-merge des reports vers dev

  • Chaque PR de report ouverte par le bot reçoit l'auto-merge : commit de merge, épinglé sur la tête ouverte, avec le titre chore(release): backport vX.Y.Z to dev comme sujet. Ce sujet est déjà ignoré par la promotion.
  • Si GitHub refuse l'auto-merge, la PR reste ouverte et sa description demande la fusion manuelle, comme avant.
  • allow_auto_merge est déjà activé sur le dépôt : aucun réglage modifié.

3. ci : moins de jobs en double

  • build, test, commitlint et release-scripts ne tournent plus que sur pull_request (vers n'importe quelle base, donc les PR empilées gardent leurs checks). Il n'y a plus de trigger push.
    • La tête de dev est vérifiée par sa PR de promotion dev → main. Celle de main l'est par le report main → dev.
    • renovate-merge.yml continue de lancer build et test sur dev par workflow_dispatch.
  • concurrency avec cancel-in-progress pour les PR : un nouveau push annule le run qu'il remplace. Les runs lancés à la main ne sont jamais annulés.
  • Le filtre obsolète sur master est supprimé.
  • Les noms des checks requis (build, test, commitlint, release-scripts) ne changent pas : le ruleset n'a pas été touché.

Modules à redémarrer

Modules à redémarrer : aucun (CI uniquement).

À reporter sur main / à faire après merge

  • release-schedule.yml est modifié ici. Il arrivera sur main avec la prochaine promotion dev → main et restera ainsi identique sur les deux branches. Pas besoin de le reporter à la main : main n'a pas bougé depuis, la fusion sera propre. D'ici là, le cron de main utilise l'ancienne copie, que le script gère.
  • La PR draft chore(release): v1.2.0-BETA.1 #104 (dev → beta, v1.2.0-BETA.1) est désormais obsolète : la fermer après le merge. Le prochain push sur dev ouvrira la promotion dev → main.
  • Le report chore(release): backport v1.1.0 to dev #101 (beta → dev, v1.1.0) est toujours ouvert. Tant qu'il l'est, ready.mjs refuse la promotion vers main : le fusionner (commit de merge) ou activer son auto-merge.
  • La branche beta peut rester en place (inutilisée) pour une réactivation éventuelle.

Until a v2, the bot opens a single dev -> main promotion: its version is the
last stable bumped by the promoted commits (no -BETA.N tag), and a stable or a
hotfix is brought back to dev straight from main. The chain lives in
.github/release/lib/flow.mjs (BETA = false); the beta pairs stay accepted by
the scripts and workflows, so setting it back to true restores dev -> beta -> main.
… dev

The bot enables auto-merge (merge commit, pinned to the head it opened) on each
backport it opens, so dev catches up with main as soon as the checks pass
instead of waiting for a manual merge. If GitHub refuses it, the PR stays open
and its body asks for the manual merge as before.
A push to a branch with an open pull request ran build, test, commitlint and
release-scripts twice (push, then pull_request). The four workflows now run on
pull requests only, into any base so stacked PRs keep their checks: dev's head
is covered by its dev -> main promotion PR, main's by the backport main -> dev,
and renovate-merge.yml still dispatches build and test on dev. A new push to a
pull request cancels the run it supersedes. The obsolete master branch filter
is gone.
@enimaloc
enimaloc merged commit 0e7496d into dev Nov 12, 2026
5 checks passed
@enimaloc enimaloc mentioned this pull request Nov 12, 2026
1 task done
@enimaloc
enimaloc deleted the chore/ci-skip-beta branch November 13, 2026 21:59
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