La telemetria è una implementazione fondamentale per sapere se le nostre applicazioni, servizi o altro, stanno funzionando come si deve. Per questo è altrettanto utile integrarla nei nostri workflow di GitHub, perchè così possiamo sapere, per esempio esportandoci dei dati in tool di analisi come Power BI, quanti dei job eseguiti sono falliti, quanti sono completati con successo, il numero di esecuzioni per workflow, il tempo medio di esecuzione e così via, utile anche per stimare i costi e le varie ottimizzazioni da eseguire.
Purtroppo, al momento, in GitHub non è previsto alcun strumento di telemetria out-of-the-box. Tuttavia, se eseguiamo i nostri workflow su runner self-hosted (quindi quelli gestiti da noi), possiamo iniettare alcuni script pre/post esecuzione dei job, così da poter eseguire la nostra logica custom.
Ci sono solamente due requisiti. Il primo consiste nel creare a priori lo script da eseguire e di caricarlo nel self-hosted runner in una qualsiasi folder (ad eccezione di quella del runner), il secondo è l'impostazione delle variabili ACTIONS_RUNNER_HOOK_JOB_STARTED o ACTIONS_RUNNER_HOOK_JOB_COMPLETED a seconda di quando lo script custom deve girare (prima che il job inizi, oppure terminata la sua esecuzione).
ACTIONS_RUNNER_HOOK_JOB_STARTED=/opt/runner/cleanup_script.sh
Non è previsto alcun timeout di default, quindi l'esecuzione andrà avanti all'infinito qualora ci fossero dei problemi e non fosse prevista lato nostro una terminazione forzata, con tutte le conseguenze del caso (job in pending, runner occupato, utenti bloccati, ecc).
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Utilizzare Locust con Azure Load Testing
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Utilizzare l nesting nativo dei CSS
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Testare l'invio dei messaggi con Event Hubs Data Explorer
Gestione file Javascript in Blazor con .NET 9
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Creare una libreria CSS universale: i bottoni
Disabilitare le run concorrenti di una pipeline di Azure DevOps