Settimana scorsa abbiamo scoperto l'esistenza e il funzionamento del tool chiamato dive per poter analizzare i singoli layer di cui è composta una determinata immagine di Docker. Il funzionamento di questo sistema, però, potrebbe estendersi ancora e potrebbe essere integrato con un sistema di CI/CD qualsiasi.
Ogni immagine che viene analizzata con dive, infatti, viene anche scannerizzata per capire:
- la grandezza dell'immagine;
- la quantità di oggetti (intesi in termini di spazio su disco) che è potenzialmente possibile eliminare;
- l'indice (stimato) di efficienza/ottimizzazione dell'immagine espressa in punti percentuali.
Tecnicamente è quindi possibile eseguire un comando simile al seguente (supponendo di usare PowerShell):
$env:CI=$True; dive aspitalia --lowestEfficiency 0.99
Come prima cosa abbiamo impostato la variabile d'ambiente CI al valore true. Così facendo, i parametri di input passati oltre al nome dell'immagine verranno effettivamente valutati e di conseguenza anzichè aprirsi la UI, come abbiamo visto nello script precedente, il tool uscirà con uno status code indicante il successo/fallimento del comando richiesto.
In questo caso specifico, stiamo chiedendo a dive di impostare come valore minimo di efficienza stimata il 99%. Qualsiasi valore al di sotto di quella soglia, causerà un fallimento del comando stesso:

Questa serie di comandi, impostati secondi determinati valori di riferimento, ha senso che vengano applicati in un sistema di CI/CD (indipendentemente dal fatto che sia Azure DevOps Pipelines, GitHub Actions o altro) per incrementare i livelli di sicurezza e, ad esempio, far fallire pull request che non rispettano questi standard.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire script pre e post esecuzione di un workflow di GitHub
Migliorare la sicurezza dei prompt con Azure AI Studio
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Creare un webhook in Azure DevOps
Selettore CSS :has() e i suoi casi d'uso avanzati
Managed deployment strategy in Azure DevOps
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Triggerare una pipeline su un altro repository di Azure DevOps
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Introduzione alle Container Queries