[CI] quality-gates — la deroga owns-auth-roles non arriva allo step e blocca node-user-profiling #8
Notifications
Total Time Spent: 1 hour 30 minutes
LucaZanni
1 hour 30 minutes
No due date set.
Dependencies
No dependencies set.
Reference: devops/shared-actions#8
Reference in New Issue
Block a user
Sintomo
node-user-profilingha la CI rossa da tre push consecutivi (run 26374, 27457, 27540). Fallisce sempre lo stesso step diquality-gates.yml@v1:Il gate sta bloccando il repository proprietario dello schema, cioè l'unico a cui quei sei
INSERTsono legittimamente concessi. Tutti gli step successivi (npm ci, lint, typecheck, format, build, test) risultanoskipped: da tre push non si sa più niente della qualità del codice di quel microservizio.Causa
Lo step nasce con la propria deroga:
e
node-user-profiling/.gitea/workflows/ci.ymlpassa correttamenteowns-auth-roles: truedal commit4ec9706(28/08, undici secondi prima del commit67fccd8che ha introdotto il gate qui).Il valore però non arriva: nel
workflow_calldi act_runner (v1.0.6) i valoriwith:del chiamante non raggiungono il contestoinputsin posizioneif:, quindi!inputs.owns-auth-rolesresta vero e lo step gira comunque. Non era emerso subito perché la deroga è nata insieme al gate e il tagv1è stato spostato su67fccd8solo dopo: i run 137–141 usavano ancora unav1senza lo step.Il resto del workflow condiviso non se n'era accorto perché ogni altro uso di
inputsè scritto con un fallback (inputs.node-version || '24.16.0',inputs.working-directory || '.'), che maschera il valore assente restituendo il default.Correzione
Togliere la deroga dal campo
if:e leggerla dentro lo script come variabile d'ambiente, con il nome del repository come rete di sicurezza:Le due condizioni dicono la stessa cosa — una dichiarata dal chiamante, una constatata dal runner — così la deroga regge anche se
inputsnon dovesse arrivare nemmeno inenv:.Verificato in locale sui tre casi: deroga via input (esce 0), deroga via nome repository con input vuoto (esce 0), repo terzo con le stesse migrazioni (esce 1, il gate continua a mordere).
Dopo il merge va spostato il tag
v1sul nuovo commit, altrimenti la flotta continua a prendere la versione difettosa.