- l'analisi delle ARG diventa la funzione arg_scope, e all'avvio gira su
un Dockerfile di prova con una ARG fuori scope nota: se l'awk del runner
non la riconosce, un ::warning lo dice, il controllo delle ARG salta e
quello del registry resta, invece di dichiarare in regola ciò che non ha
potuto leggere
- regex portabile: [$][{]? al posto di \$\{?, che gawk --posix segnalava
come escape sconosciuto
- collaudo su gawk e gawk --posix (Dockerfile sintetico, pzeta-king prima
della correzione, vue-pzportal, node-xmlvalidation) e con un awk rotto;
stesso step, identico, nelle due varianti quality-gates
Fixes#12 @25m
refs PZeta_Touch/flux-repo#133
- una ARG passa agli stage che derivano da quello che la dichiara
(FROM <stage>), come le ENV: lo prova il log BuildKit di
nuxt-vue-components-docs v1.0.13, dove deps espande la NPM_VERSION di base
- prima era un falso avviso su ogni Dockerfile con la ARG in uno stage base
- nomi di stage confrontati senza distinzione di maiuscole, come in Docker
- collaudo su un Dockerfile sintetico (ARG globale, padre, fratello,
nipote, ENV, predefinite, commenti nelle continuazioni): segnala solo i
due casi attesi
Fixes#10 @25m
refs PZeta_Touch/flux-repo#133
- quality-gates.yml: nuovo step prima dell'install che scansiona i Dockerfile
del repository e segnala con ::warning file/riga, più una tabella nel job
summary, (a) il registry @pzeta scritto pzeta_touch o pzeta e (b) le ARG
usate in uno stage che non le dichiara
- solo avviso (continue-on-error, uscita sempre 0): bloccante oggi
fermerebbe i ~46 repo che reggono solo perché pinnano npm 11; lo diventa
con la tappa 2 di flux-repo#133
- analisi per stage in awk POSIX, collaudata anche con gawk --posix:
scada-runtime 19 avvisi, pzeta-king 2, vue-pzportal 1, node-xmlvalidation 0
Fixes#9 @1h30m
refs PZeta_Touch/flux-repo#133
- quality-gates.yml: `owns-auth-roles` esce dal campo `if:` dello step e viene
letta come env `OWNS_AUTH_ROLES`. In posizione `if:` i valori `with:` del
chiamante non raggiungono il contesto `inputs` di act_runner, quindi il gate
bocciava proprio node-user-profiling, l'unico repo autorizzato a dichiarare
ruoli: tre run rossi e ogni gate successivo saltato
- il nome del repository fa da rete di sicurezza accanto all'input: una deroga
dichiarata e una constatata, cosi' regge anche se `inputs` non arrivasse
- verificato sui tre casi: deroga via input, deroga via nome con input vuoto,
repo terzo con le stesse migrazioni (continua a fallire, nessuna regressione)
Fixes#8 @1h30m
- nuovo step in quality-gates.yml: cerca INSERT INTO auth.ruoli nei file .sql di
migrations, seeds, sql e database/migrations, e fallisce spiegando cosa fare
invece — dichiarare un gruppo d'area con i propri permessi, scegliendo il
livello fra i tredici di piattaforma
- il contratto esisteva dal seed 13 di node-user-profiling e prevedeva questo
controllo, che non era mai stato scritto: nove microfrontend lo hanno
disatteso, 21 ruoli creati e 27 su 35 senza omonimo PostgreSQL. Un ruolo cosi'
nel claim role del JWT e' un SET ROLE che non riesce, e l'utenza di collaudo
del timesheet ne era la prova
- il boundary dopo `ruoli` tiene fuori auth.ruolipermessi; le righe di commento
sono ignorate perche' spesso spiegano proprio questa regola
- una-tantum e rollback sono escluse: raccolgono delta generati e script di
ritorno, fotografie di stati passati che riscrivere falserebbe
- nuovo input owns-auth-roles (default false): solo node-user-profiling, che
possiede lo schema, lo mette a true. Unica deroga, ed e' esplicita
- verificato su tutti i 30 frontend con migrazioni e sui backend principali:
nessuno fallisce dopo la ripulitura dei nove repo
Fixes#7 @1h
- .gitea/workflows/*.yml: il registry @pzeta scritto in ~/.npmrc passa da
`pzeta_touch` a `PZeta_Touch` (12 file, 24 righe). E' la stessa causa dei
Dockerfile: i package-lock.json della flotta risolvono i tarball su
`.../api/packages/PZeta_Touch/npm/`, npm confronta gli URL come stringhe e
con la grafia minuscola tratta il pacchetto come tarball remota (EALLOWREMOTE
da npm 11) e non applica il _authToken
- e' il punto di massima leva: quality-gates.yml e docker-release.yml sono
chiamati via `uses:` da 51 repo `node-*` ed eseguono `npm ci` sul runner
PRIMA di `docker build`, quindi la release si ferma li' anche con il
Dockerfile gia' corretto
- il REGISTRY delle immagini (`gitea.pzetatouch.it/pzeta_touch`) resta
minuscolo: i nomi dei repository Docker devono esserlo, ed e' la grafia usata
dai defaults di flux-repo
refs PZeta_Touch/flux-repo#129 @45m
- quality-gates, dependency-check, dependency-outdated, npm-publish e
auto-release accettano ora working-directory (default "."), applicato via
defaults.run a livello di job: copre tutti gli step run senza toccare gli
step uses, che devono restare sulla root
- Allineate le varianti -github dei cinque workflow
- Sblocca i repo dove package.json non e' in root (pzeta-calendar in
typescript/, pzeta-king in server/), che finora dovevano rinunciare ai
template e reinlineare i job, perdendo la working-directory a ogni
riallineamento
- Retrocompatibile: con l'input omesso il comportamento resta identico
refs #4
gitea.com/actions/cache@v4 restituisce HTTP 500 in modo intermittente.
github.com/actions/cache@v4 già usato dal runner per altri step (setup-java, ecc.).