diff --git a/.gitea/workflows/quality-gates-github.yml b/.gitea/workflows/quality-gates-github.yml index 061ee59..67cda5b 100644 --- a/.gitea/workflows/quality-gates-github.yml +++ b/.gitea/workflows/quality-gates-github.yml @@ -46,12 +46,14 @@ jobs: echo "@pzeta:registry=https://gitea.pzetatouch.it/api/packages/PZeta_Touch/npm/" >> ~/.npmrc echo "//gitea.pzetatouch.it/api/packages/PZeta_Touch/npm/:_authToken=${{ secrets.NPM_TOKEN }}" >> ~/.npmrc - - name: Dockerfile - registry @pzeta e ARG per stage (solo avviso) + - name: Dockerfile - registry @pzeta e ARG per stage shell: bash - # Solo avviso finche' i ~46 repo con il registry in minuscolo non sono - # corretti: bloccante oggi li farebbe diventare rossi tutti insieme. - # Diventa bloccante con la tappa 2 di PZeta_Touch/flux-repo#133. - continue-on-error: true + # BLOCCANTE dal 12/09/2026, chiusa la tappa 2 di PZeta_Touch/flux-repo#133. + # Prima era solo un avviso, perche' 56 repo avevano ancora uno dei due + # difetti e bloccare li avrebbe fatti diventare rossi tutti insieme. Ora + # sono corretti: su 238 Dockerfile del portale ne restano difettosi due, + # `vue-conservazione` e `telegram-media-bot`, che non sono repository git + # e quindi non passano di qui. run: | # Due difetti che hanno rotto le release di node-xmlvalidation per due # mesi senza che nessuno se ne accorgesse (PZeta_Touch/flux-repo#129, @@ -78,11 +80,14 @@ jobs: exit 0 fi - # (b) ARG fuori scope: una ARG vale nello stage che la dichiara e in - # quelli che ne derivano (FROM ), come le ENV; quelle dichiarate - # prima del primo FROM valgono solo nelle righe FROM. Verificato sul - # log di BuildKit di nuxt-vue-components-docs v1.0.13: `FROM base AS - # deps` vede la NPM_VERSION dichiarata in `base`. + # (b) ARG fuori scope: una ARG vale SOLO nello stage che la dichiara. + # Quelle dichiarate prima del primo FROM valgono solo nelle righe FROM, + # e vanno ridichiarate dentro lo stage per essere viste dai RUN + # (documentazione Docker, "Scoping" in build/building/variables). + # Nessuna eredita' da `FROM `: le ENV si ereditano, le ARG no. + # Una versione precedente di questa guardia presumeva il contrario e + # lasciava passare proprio i casi come nuxt-vue-components-docs, dove + # la ARG dichiarata in `base` veniva usata in `deps` (#133). arg_scope() { ${AWK:-awk} ' function trim(s) { sub(/^[ \t]+/, "", s); sub(/[ \t]+$/, "", s); return s } @@ -107,9 +112,9 @@ jobs: if (i + 2 <= n && toupper(t[i + 1]) == "AS") alias = tolower(t[i + 2]) stages++ stage = (alias != "" ? alias : "#" stages) - split("", scope); split("", inh) - for (k in varof) { split(k, p, SUBSEP); if (p[1] == base) inh[p[2]] = 1 } - for (k in inh) { scope[k] = 1; varof[stage, k] = 1 } + # Scope nuovo e vuoto: niente viene ereditato dallo stage di base. + # (Nessun apostrofo qui dentro: chiuderebbe la stringa awk.) + split("", scope) return } if (stage == "") return @@ -195,7 +200,7 @@ jobs: exit 0 fi - summary="## ⚠️ Dockerfile: difetti della #133 (solo avviso)"$'\n\n'"| File | Riga | Difetto |"$'\n'"|---|---|---|"$'\n' + summary="## ❌ Dockerfile: difetti della #133"$'\n\n'"| File | Riga | Difetto |"$'\n'"|---|---|---|"$'\n' count=0 while IFS=' ' read -r f n kind v st; do [ -n "$f" ] || continue @@ -208,19 +213,21 @@ jobs: [ "$v" = "NPM_VERSION" ] && effetto="e' vuota, e 'npm install -g npm@' installa l'ultima ignorando il pin" msg="ARG ${v} usata nello stage '${st}' senza dichiararla: li' ${effetto}. Aggiungere 'ARG ${v}' dopo il FROM dello stage." fi - echo "::warning file=${f},line=${n}::${msg}" + echo "::error file=${f},line=${n}::${msg}" summary="${summary}| \`${f}\` | ${n} | ${msg} |"$'\n' done <> "$GITHUB_STEP_SUMMARY" 2>/dev/null + printf '%s\n%s\n' "$summary" "Riferimento: PZeta_Touch/flux-repo#133" >> "$GITHUB_STEP_SUMMARY" 2>/dev/null fi - exit 0 + exit 1 - name: Check outdated packages run: npm outdated || true diff --git a/.gitea/workflows/quality-gates.yml b/.gitea/workflows/quality-gates.yml index f9ae2f8..552f8d3 100644 --- a/.gitea/workflows/quality-gates.yml +++ b/.gitea/workflows/quality-gates.yml @@ -125,12 +125,14 @@ jobs: fi echo "Nessun INSERT INTO auth.ruoli: contratto rispettato." - - name: Dockerfile - registry @pzeta e ARG per stage (solo avviso) + - name: Dockerfile - registry @pzeta e ARG per stage shell: bash - # Solo avviso finche' i ~46 repo con il registry in minuscolo non sono - # corretti: bloccante oggi li farebbe diventare rossi tutti insieme. - # Diventa bloccante con la tappa 2 di PZeta_Touch/flux-repo#133. - continue-on-error: true + # BLOCCANTE dal 12/09/2026, chiusa la tappa 2 di PZeta_Touch/flux-repo#133. + # Prima era solo un avviso, perche' 56 repo avevano ancora uno dei due + # difetti e bloccare li avrebbe fatti diventare rossi tutti insieme. Ora + # sono corretti: su 238 Dockerfile del portale ne restano difettosi due, + # `vue-conservazione` e `telegram-media-bot`, che non sono repository git + # e quindi non passano di qui. run: | # Due difetti che hanno rotto le release di node-xmlvalidation per due # mesi senza che nessuno se ne accorgesse (PZeta_Touch/flux-repo#129, @@ -157,11 +159,14 @@ jobs: exit 0 fi - # (b) ARG fuori scope: una ARG vale nello stage che la dichiara e in - # quelli che ne derivano (FROM ), come le ENV; quelle dichiarate - # prima del primo FROM valgono solo nelle righe FROM. Verificato sul - # log di BuildKit di nuxt-vue-components-docs v1.0.13: `FROM base AS - # deps` vede la NPM_VERSION dichiarata in `base`. + # (b) ARG fuori scope: una ARG vale SOLO nello stage che la dichiara. + # Quelle dichiarate prima del primo FROM valgono solo nelle righe FROM, + # e vanno ridichiarate dentro lo stage per essere viste dai RUN + # (documentazione Docker, "Scoping" in build/building/variables). + # Nessuna eredita' da `FROM `: le ENV si ereditano, le ARG no. + # Una versione precedente di questa guardia presumeva il contrario e + # lasciava passare proprio i casi come nuxt-vue-components-docs, dove + # la ARG dichiarata in `base` veniva usata in `deps` (#133). arg_scope() { ${AWK:-awk} ' function trim(s) { sub(/^[ \t]+/, "", s); sub(/[ \t]+$/, "", s); return s } @@ -186,9 +191,9 @@ jobs: if (i + 2 <= n && toupper(t[i + 1]) == "AS") alias = tolower(t[i + 2]) stages++ stage = (alias != "" ? alias : "#" stages) - split("", scope); split("", inh) - for (k in varof) { split(k, p, SUBSEP); if (p[1] == base) inh[p[2]] = 1 } - for (k in inh) { scope[k] = 1; varof[stage, k] = 1 } + # Scope nuovo e vuoto: niente viene ereditato dallo stage di base. + # (Nessun apostrofo qui dentro: chiuderebbe la stringa awk.) + split("", scope) return } if (stage == "") return @@ -274,7 +279,7 @@ jobs: exit 0 fi - summary="## ⚠️ Dockerfile: difetti della #133 (solo avviso)"$'\n\n'"| File | Riga | Difetto |"$'\n'"|---|---|---|"$'\n' + summary="## ❌ Dockerfile: difetti della #133"$'\n\n'"| File | Riga | Difetto |"$'\n'"|---|---|---|"$'\n' count=0 while IFS=' ' read -r f n kind v st; do [ -n "$f" ] || continue @@ -287,19 +292,21 @@ jobs: [ "$v" = "NPM_VERSION" ] && effetto="e' vuota, e 'npm install -g npm@' installa l'ultima ignorando il pin" msg="ARG ${v} usata nello stage '${st}' senza dichiararla: li' ${effetto}. Aggiungere 'ARG ${v}' dopo il FROM dello stage." fi - echo "::warning file=${f},line=${n}::${msg}" + echo "::error file=${f},line=${n}::${msg}" summary="${summary}| \`${f}\` | ${n} | ${msg} |"$'\n' done <> "$GITHUB_STEP_SUMMARY" 2>/dev/null + printf '%s\n%s\n' "$summary" "Riferimento: PZeta_Touch/flux-repo#133" >> "$GITHUB_STEP_SUMMARY" 2>/dev/null fi - exit 0 + exit 1 - name: Check outdated packages run: npm outdated || true