🔒 fix(ci): la guardia Dockerfile blocca, e le ARG valgono solo nel loro stage
- via `continue-on-error`: i 56 repo difettosi sono stati corretti (tappa 2 di PZeta_Touch/flux-repo#133), e su 238 Dockerfile del portale ne restano due, che non sono repository git e non passano di qui - le ARG non si ereditano da `FROM <stage>`, come dice la documentazione Docker: la versione precedente presumeva il contrario e lasciava passare proprio i casi come nuxt-vue-components-docs, cioè quelli che tirano dentro npm 12 e fanno fallire la build al tag - messaggi da ::warning a ::error, e uscita 1 quando trova qualcosa Fixes #14 @1h30m
This commit is contained in:
@@ -46,12 +46,14 @@ jobs:
|
|||||||
echo "@pzeta:registry=https://gitea.pzetatouch.it/api/packages/PZeta_Touch/npm/" >> ~/.npmrc
|
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
|
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
|
shell: bash
|
||||||
# Solo avviso finche' i ~46 repo con il registry in minuscolo non sono
|
# BLOCCANTE dal 12/09/2026, chiusa la tappa 2 di PZeta_Touch/flux-repo#133.
|
||||||
# corretti: bloccante oggi li farebbe diventare rossi tutti insieme.
|
# Prima era solo un avviso, perche' 56 repo avevano ancora uno dei due
|
||||||
# Diventa bloccante con la tappa 2 di PZeta_Touch/flux-repo#133.
|
# difetti e bloccare li avrebbe fatti diventare rossi tutti insieme. Ora
|
||||||
continue-on-error: true
|
# 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: |
|
run: |
|
||||||
# Due difetti che hanno rotto le release di node-xmlvalidation per due
|
# Due difetti che hanno rotto le release di node-xmlvalidation per due
|
||||||
# mesi senza che nessuno se ne accorgesse (PZeta_Touch/flux-repo#129,
|
# mesi senza che nessuno se ne accorgesse (PZeta_Touch/flux-repo#129,
|
||||||
@@ -78,11 +80,14 @@ jobs:
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# (b) ARG fuori scope: una ARG vale nello stage che la dichiara e in
|
# (b) ARG fuori scope: una ARG vale SOLO nello stage che la dichiara.
|
||||||
# quelli che ne derivano (FROM <stage>), come le ENV; quelle dichiarate
|
# Quelle dichiarate prima del primo FROM valgono solo nelle righe FROM,
|
||||||
# prima del primo FROM valgono solo nelle righe FROM. Verificato sul
|
# e vanno ridichiarate dentro lo stage per essere viste dai RUN
|
||||||
# log di BuildKit di nuxt-vue-components-docs v1.0.13: `FROM base AS
|
# (documentazione Docker, "Scoping" in build/building/variables).
|
||||||
# deps` vede la NPM_VERSION dichiarata in `base`.
|
# Nessuna eredita' da `FROM <stage>`: 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() {
|
arg_scope() {
|
||||||
${AWK:-awk} '
|
${AWK:-awk} '
|
||||||
function trim(s) { sub(/^[ \t]+/, "", s); sub(/[ \t]+$/, "", s); return s }
|
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])
|
if (i + 2 <= n && toupper(t[i + 1]) == "AS") alias = tolower(t[i + 2])
|
||||||
stages++
|
stages++
|
||||||
stage = (alias != "" ? alias : "#" stages)
|
stage = (alias != "" ? alias : "#" stages)
|
||||||
split("", scope); split("", inh)
|
# Scope nuovo e vuoto: niente viene ereditato dallo stage di base.
|
||||||
for (k in varof) { split(k, p, SUBSEP); if (p[1] == base) inh[p[2]] = 1 }
|
# (Nessun apostrofo qui dentro: chiuderebbe la stringa awk.)
|
||||||
for (k in inh) { scope[k] = 1; varof[stage, k] = 1 }
|
split("", scope)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (stage == "") return
|
if (stage == "") return
|
||||||
@@ -195,7 +200,7 @@ jobs:
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
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
|
count=0
|
||||||
while IFS=' ' read -r f n kind v st; do
|
while IFS=' ' read -r f n kind v st; do
|
||||||
[ -n "$f" ] || continue
|
[ -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"
|
[ "$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."
|
msg="ARG ${v} usata nello stage '${st}' senza dichiararla: li' ${effetto}. Aggiungere 'ARG ${v}' dopo il FROM dello stage."
|
||||||
fi
|
fi
|
||||||
echo "::warning file=${f},line=${n}::${msg}"
|
echo "::error file=${f},line=${n}::${msg}"
|
||||||
summary="${summary}| \`${f}\` | ${n} | ${msg} |"$'\n'
|
summary="${summary}| \`${f}\` | ${n} | ${msg} |"$'\n'
|
||||||
done <<EOF
|
done <<EOF
|
||||||
$findings
|
$findings
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
parola="avvisi"; [ "$count" -eq 1 ] && parola="avviso"
|
parola="difetti"; [ "$count" -eq 1 ] && parola="difetto"
|
||||||
echo "${count} ${parola}. Il controllo non blocca: diventera' bloccante con la tappa 2 di PZeta_Touch/flux-repo#133."
|
echo "${count} ${parola}. Il job si ferma qui: con npm 12 la build dell'immagine"
|
||||||
|
echo "fallirebbe al tag, cioe' molto piu' tardi e su un log che nessuno guarda"
|
||||||
|
echo "(e' andata cosi' per due mesi con node-xmlvalidation, PZeta_Touch/flux-repo#129)."
|
||||||
if [ -n "${GITHUB_STEP_SUMMARY:-}" ]; then
|
if [ -n "${GITHUB_STEP_SUMMARY:-}" ]; then
|
||||||
printf '%s\n%s\n' "$summary" "Riferimento: PZeta_Touch/flux-repo#133 — per ora non blocca." >> "$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
|
fi
|
||||||
exit 0
|
exit 1
|
||||||
|
|
||||||
- name: Check outdated packages
|
- name: Check outdated packages
|
||||||
run: npm outdated || true
|
run: npm outdated || true
|
||||||
|
|||||||
@@ -125,12 +125,14 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
echo "Nessun INSERT INTO auth.ruoli: contratto rispettato."
|
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
|
shell: bash
|
||||||
# Solo avviso finche' i ~46 repo con il registry in minuscolo non sono
|
# BLOCCANTE dal 12/09/2026, chiusa la tappa 2 di PZeta_Touch/flux-repo#133.
|
||||||
# corretti: bloccante oggi li farebbe diventare rossi tutti insieme.
|
# Prima era solo un avviso, perche' 56 repo avevano ancora uno dei due
|
||||||
# Diventa bloccante con la tappa 2 di PZeta_Touch/flux-repo#133.
|
# difetti e bloccare li avrebbe fatti diventare rossi tutti insieme. Ora
|
||||||
continue-on-error: true
|
# 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: |
|
run: |
|
||||||
# Due difetti che hanno rotto le release di node-xmlvalidation per due
|
# Due difetti che hanno rotto le release di node-xmlvalidation per due
|
||||||
# mesi senza che nessuno se ne accorgesse (PZeta_Touch/flux-repo#129,
|
# mesi senza che nessuno se ne accorgesse (PZeta_Touch/flux-repo#129,
|
||||||
@@ -157,11 +159,14 @@ jobs:
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# (b) ARG fuori scope: una ARG vale nello stage che la dichiara e in
|
# (b) ARG fuori scope: una ARG vale SOLO nello stage che la dichiara.
|
||||||
# quelli che ne derivano (FROM <stage>), come le ENV; quelle dichiarate
|
# Quelle dichiarate prima del primo FROM valgono solo nelle righe FROM,
|
||||||
# prima del primo FROM valgono solo nelle righe FROM. Verificato sul
|
# e vanno ridichiarate dentro lo stage per essere viste dai RUN
|
||||||
# log di BuildKit di nuxt-vue-components-docs v1.0.13: `FROM base AS
|
# (documentazione Docker, "Scoping" in build/building/variables).
|
||||||
# deps` vede la NPM_VERSION dichiarata in `base`.
|
# Nessuna eredita' da `FROM <stage>`: 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() {
|
arg_scope() {
|
||||||
${AWK:-awk} '
|
${AWK:-awk} '
|
||||||
function trim(s) { sub(/^[ \t]+/, "", s); sub(/[ \t]+$/, "", s); return s }
|
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])
|
if (i + 2 <= n && toupper(t[i + 1]) == "AS") alias = tolower(t[i + 2])
|
||||||
stages++
|
stages++
|
||||||
stage = (alias != "" ? alias : "#" stages)
|
stage = (alias != "" ? alias : "#" stages)
|
||||||
split("", scope); split("", inh)
|
# Scope nuovo e vuoto: niente viene ereditato dallo stage di base.
|
||||||
for (k in varof) { split(k, p, SUBSEP); if (p[1] == base) inh[p[2]] = 1 }
|
# (Nessun apostrofo qui dentro: chiuderebbe la stringa awk.)
|
||||||
for (k in inh) { scope[k] = 1; varof[stage, k] = 1 }
|
split("", scope)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (stage == "") return
|
if (stage == "") return
|
||||||
@@ -274,7 +279,7 @@ jobs:
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
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
|
count=0
|
||||||
while IFS=' ' read -r f n kind v st; do
|
while IFS=' ' read -r f n kind v st; do
|
||||||
[ -n "$f" ] || continue
|
[ -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"
|
[ "$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."
|
msg="ARG ${v} usata nello stage '${st}' senza dichiararla: li' ${effetto}. Aggiungere 'ARG ${v}' dopo il FROM dello stage."
|
||||||
fi
|
fi
|
||||||
echo "::warning file=${f},line=${n}::${msg}"
|
echo "::error file=${f},line=${n}::${msg}"
|
||||||
summary="${summary}| \`${f}\` | ${n} | ${msg} |"$'\n'
|
summary="${summary}| \`${f}\` | ${n} | ${msg} |"$'\n'
|
||||||
done <<EOF
|
done <<EOF
|
||||||
$findings
|
$findings
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
parola="avvisi"; [ "$count" -eq 1 ] && parola="avviso"
|
parola="difetti"; [ "$count" -eq 1 ] && parola="difetto"
|
||||||
echo "${count} ${parola}. Il controllo non blocca: diventera' bloccante con la tappa 2 di PZeta_Touch/flux-repo#133."
|
echo "${count} ${parola}. Il job si ferma qui: con npm 12 la build dell'immagine"
|
||||||
|
echo "fallirebbe al tag, cioe' molto piu' tardi e su un log che nessuno guarda"
|
||||||
|
echo "(e' andata cosi' per due mesi con node-xmlvalidation, PZeta_Touch/flux-repo#129)."
|
||||||
if [ -n "${GITHUB_STEP_SUMMARY:-}" ]; then
|
if [ -n "${GITHUB_STEP_SUMMARY:-}" ]; then
|
||||||
printf '%s\n%s\n' "$summary" "Riferimento: PZeta_Touch/flux-repo#133 — per ora non blocca." >> "$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
|
fi
|
||||||
exit 0
|
exit 1
|
||||||
|
|
||||||
- name: Check outdated packages
|
- name: Check outdated packages
|
||||||
run: npm outdated || true
|
run: npm outdated || true
|
||||||
|
|||||||
Reference in New Issue
Block a user