fix(cicd) — épingler la version du runner : latest + pull: missing ne rafraîchit JAMAIS
Réponse à « qu'est-ce qui nous empêche d'upgrade des deux côtés ? » : rien. Le playbook déployait `gitea/act_runner:latest` avec `pull: missing`, c'est-à-dire la pire combinaison possible — un tag FLOTTANT qui n'est JAMAIS rafraîchi. Chaque hôte garde donc ce que « latest » voulait dire le jour de son premier pull : pi1 : sha256:7bdc8d31… → v0.3.1 pi3 : sha256:0f65fa10… → v0.2.13 Deux machines censées être équivalentes, deux versions à trois mineures d'écart. Effets mesurés : le MÊME job, sur la MÊME image de CI, met 511 s sur pi1 et 397 s sur pi3 (114 s d'écart imputables à la machine) ; et pi3 a mal lu la définition d'un job dont il dépendait (« 'runs-on' key not defined », puis « No steps found »). ⚠ POURQUOI PAS `latest` + `pull: always`. `latest` vaut aujourd'hui **0.6.1** (Docker Hub, 30/04/2026), soit 3 à 4 versions mineures devant tout ce qui est éprouvé ici. Le runner exécute TOUTE la CI de la forge : une montée subie, non datée et non choisie s'y paie cher. On épingle donc, et on monte délibérément. ⚠ POURQUOI 0.3.1 ET PAS 0.6.1. 0.3.1 est la version que pi1 exécute DÉJÀ avec succès sur cette forge. Ce changement aligne donc pi3 VERS LE HAUT, sur du prouvé, sans saut de quatre versions. Passer ensuite à 0.6.1 devient une modification d'UNE ligne, datée et reculable — c'est tout l'intérêt de la variable. ⚠ Et `pull: missing` redevient CORRECT avec un tag épinglé : changer la version change le tag, donc l'image est absente, donc elle est tirée. Aucun besoin de `pull: always`, qui interrogerait le registre à chaque passage pour rien. ⚠ NE PAS jouer ce playbook pendant qu'une CI tourne : il recrée les conteneurs de runner et TUE les jobs en vol (journaux perdus). Vérifier `list_runs` avant — et se rappeler qu'un merge est un déclencheur. Refs arcodange-org/factory#50 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
@@ -9,3 +9,26 @@
|
||||
# so the secret propagation playbook iterates over this list.
|
||||
gitea_secret_propagation_users:
|
||||
- arcodange
|
||||
|
||||
# ══════════════════════════════════════════════════════════════════════════
|
||||
# VERSION DU RUNNER GITEA ACTIONS — ÉPINGLÉE, ET C'EST LE POINT.
|
||||
#
|
||||
# Le playbook 03_cicd déployait `gitea/act_runner:latest` avec `pull: missing`,
|
||||
# c'est-à-dire la pire combinaison possible : un tag FLOTTANT qui n'est JAMAIS
|
||||
# rafraîchi. Chaque hôte garde ce que « latest » voulait dire le jour de son
|
||||
# premier pull — d'où deux machines censées être équivalentes qui divergent
|
||||
# (constaté le 2026-07-30) :
|
||||
#
|
||||
# pi1 : sha256:7bdc8d31… → act_runner v0.3.1
|
||||
# pi3 : sha256:0f65fa10… → act_runner v0.2.13
|
||||
#
|
||||
# Effet mesuré : le MÊME job, sur la MÊME image de CI, met 511 s sur pi1 et
|
||||
# 397 s sur pi3 — 114 s d'écart imputables à la machine. Et pi3 (v0.2.13) a mal
|
||||
# lu la définition d'un job dont il dépendait (« 'runs-on' key not defined »,
|
||||
# puis « No steps found »).
|
||||
#
|
||||
# ⚠ NE PAS remplacer par `latest` + `pull: always` : `latest` vaut aujourd'hui
|
||||
# 0.6.1, soit 3 à 4 versions mineures devant tout ce qui est éprouvé ici. Le
|
||||
# runner exécute TOUTE la CI de la forge — une montée subie, non datée et non
|
||||
# choisie, s'y paie cher. Une version épinglée se relit, se date et se recule.
|
||||
gitea_runner_version: "0.3.1"
|
||||
|
||||
@@ -30,7 +30,14 @@
|
||||
name: arcodange_factory_gitea_action
|
||||
services:
|
||||
gitea_action:
|
||||
image: gitea/act_runner:latest
|
||||
# ⚠ VERSION ÉPINGLÉE (inventory/group_vars/all/gitea.yml), PAS `latest`.
|
||||
# `latest` + `pull: missing` = tag flottant JAMAIS rafraîchi : chaque
|
||||
# hôte gardait ce que « latest » voulait dire à son premier pull, d'où
|
||||
# pi1 en v0.3.1 et pi3 en v0.2.13 sur des machines censées être
|
||||
# équivalentes (114 s d'écart mesurés sur le même job).
|
||||
# Avec un tag épinglé, `pull: missing` redevient CORRECT : changer la
|
||||
# version change le tag, donc l'image est absente, donc elle est tirée.
|
||||
image: gitea/act_runner:{{ gitea_runner_version }}
|
||||
container_name: gitea_action
|
||||
restart: always
|
||||
environment:
|
||||
|
||||
Reference in New Issue
Block a user