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
Recuperare l'ultima versione di una release di GitHub
.NET Aspire per applicazioni distribuite
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Triggerare una pipeline su un altro repository di Azure DevOps
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Utilizzare i variable font nel CSS
Migliorare l'organizzazione delle risorse con Azure Policy
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Creare una libreria CSS universale: Clip-path
Creare una custom property in GitHub