La guardia Dockerfile diventa bloccante, e le ARG seguono la regola vera #14

Closed
opened 2026-09-12 08:32:14 +00:00 by LucaZanni · 0 comments
Owner

Due modifiche alla guardia introdotta con le #9-#13, ora che la tappa 2 di PZeta_Touch/flux-repo#133 è chiusa.

1. Bloccante

Nasceva come solo avviso perché 56 repository avevano ancora uno dei due difetti: bloccare allora li avrebbe fatti diventare rossi tutti insieme. Oggi sono corretti. Scansione dell'intero portale con la regola stretta: 238 Dockerfile, 2 difettosi — frontend/vue-conservazione e telegram/telegram-media-bot, che non sono repository git e quindi non passano di qui.

Quindi lo step perde continue-on-error, i messaggi diventano ::error e il job si ferma. Il motivo per cui vale la pena fermarlo qui: senza, il difetto si manifesta solo al tag, dentro il log di una release che nessuno guarda — è andata così per due mesi con node-xmlvalidation (PZeta_Touch/flux-repo#129).

2. Le ARG non si ereditano fra stage

La versione precedente presumeva che FROM base AS deps vedesse le ARG dichiarate in base, come accade per le ENV. La documentazione Docker dice il contrario: una ARG vale nello stage che la dichiara, e quelle globali vanno ridichiarate dentro lo stage per essere viste dai RUN.

Con l'ipotesi vecchia la guardia lasciava passare proprio i casi come nuxt-vue-components-docs, dove il pin di npm dichiarato in base veniva usato in deps e lì arrivava vuoto: npm install -g npm@ installava l'ultima versione, cioè oggi npm 12, che è quella che rifiuta il registry scritto diverso. Il difetto che la guardia esiste per intercettare.

Prove

  • Portale intero (GITHUB_WORKSPACE=D:\Progetti\portale): segnala i 2 file noti e nient'altro.
  • Repository corretto (vue-hr-valutazioni): «in regola», uscita 0.
  • Dockerfile costruito apposta con ARG dichiarata in base, usata in deps e ridichiarata in prod: segnala solo deps, riga 7, uscita 1.
  • bash -n su entrambe le varianti dello step (Gitea e GitHub).

Una nota per chi la modificherà: dentro il programma awk, che è racchiuso fra apici singoli, nessun commento può contenere un apostrofo — chiude la stringa e rompe lo script. È successo scrivendo questa modifica, e l'ha intercettato bash -n.

Il tag v1 viene spostato solo con questo commit, non prima: lo condividono 74 repository backend più i frontend.

Due modifiche alla guardia introdotta con le #9-#13, ora che la tappa 2 di `PZeta_Touch/flux-repo#133` è chiusa. ## 1. Bloccante Nasceva come solo avviso perché 56 repository avevano ancora uno dei due difetti: bloccare allora li avrebbe fatti diventare rossi tutti insieme. Oggi sono corretti. Scansione dell'intero portale con la regola stretta: **238 Dockerfile, 2 difettosi** — `frontend/vue-conservazione` e `telegram/telegram-media-bot`, che non sono repository git e quindi non passano di qui. Quindi lo step perde `continue-on-error`, i messaggi diventano `::error` e il job si ferma. Il motivo per cui vale la pena fermarlo qui: senza, il difetto si manifesta solo al tag, dentro il log di una release che nessuno guarda — è andata così per due mesi con `node-xmlvalidation` (`PZeta_Touch/flux-repo#129`). ## 2. Le ARG non si ereditano fra stage La versione precedente presumeva che `FROM base AS deps` vedesse le `ARG` dichiarate in `base`, come accade per le `ENV`. La documentazione Docker dice il contrario: una `ARG` vale nello stage che la dichiara, e quelle globali vanno ridichiarate dentro lo stage per essere viste dai `RUN`. Con l'ipotesi vecchia la guardia **lasciava passare** proprio i casi come `nuxt-vue-components-docs`, dove il pin di npm dichiarato in `base` veniva usato in `deps` e lì arrivava vuoto: `npm install -g npm@` installava l'ultima versione, cioè oggi npm 12, che è quella che rifiuta il registry scritto diverso. Il difetto che la guardia esiste per intercettare. ## Prove - **Portale intero** (`GITHUB_WORKSPACE=D:\Progetti\portale`): segnala i 2 file noti e nient'altro. - **Repository corretto** (`vue-hr-valutazioni`): «in regola», uscita 0. - **Dockerfile costruito apposta** con `ARG` dichiarata in `base`, usata in `deps` e ridichiarata in `prod`: segnala solo `deps`, riga 7, uscita 1. - `bash -n` su entrambe le varianti dello step (Gitea e GitHub). Una nota per chi la modificherà: dentro il programma `awk`, che è racchiuso fra apici singoli, **nessun commento può contenere un apostrofo** — chiude la stringa e rompe lo script. È successo scrivendo questa modifica, e l'ha intercettato `bash -n`. Il tag `v1` viene spostato solo con questo commit, non prima: lo condividono 74 repository backend più i frontend.
LucaZanni added spent time 1 hour 30 minutes 2026-09-12 08:32:30 +00:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Total Time Spent: 1 hour 30 minutes
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: devops/shared-actions#14