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
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Gestione degli environment per il deploy con un workflow di GitHub
Utilizzare Model as a Service su Microsoft Azure
Gestire undefined e partial nelle reactive forms di Angular
Eseguire una GroupBy per entity in Entity Framework
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Come migrare da una form non tipizzata a una form tipizzata in Angular
Verificare la provenienza di un commit tramite le GitHub Actions
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Usare il versioning con i controller di ASP.NET Core Web API
Eseguire attività pianificate con Azure Container Jobs
Configurare policy CORS in Azure Container Apps