Negli scenari in cui vogliamo mantenere il codice delle pipeline (YAML) separato dal codice applicativo, oppure quando necessitiamo di eseguire una pipeline che fa riferimento a codice sorgente che si trova in un altro repository, ad esempio per compilare una libreria, in Azure DevOps possiamo sfruttare i resource triggers, ovvero degli appositi trigger che invocano la pipeline non quando viene fatto un commit nel repository corrente, ma quando avvengono determinate condizioni nelle risorse che mettiamo come riferimento. Vediamone un esempio.
trigger: none resources: repositories: - repository: library type: git name: MyLibraryProject ref: main trigger: - main steps: - checkout: self - checkout: library - bash: cd MyLibraryProject && cat README.md
In questa semplice pipeline abbiamo specificato che non vogliamo l'esecuzione nel momento in cui ci sono dei commit nel repository corrente. Tuttavia, nel nodo resources, abbiamo dichiarato l'esistenza di un secondo repository, chiamato library e esistente nel repository di Azure DevOps chiamato MyLibraryProject presente nello stesso team project: poiché su questo è impostato un trigger di CI sul branch main, ogni qualvolta che verrà fatto un commit sul branch o mergiata una pull request, allora questo workflow partità automaticamente e farà il checkout di entrambi i repo (sia quello corrente che la library) e quindi stamperà il README.
In questo modo possiamo avere completa separazione tra le pipeline e il codice applicativo, piuttosto che possiamo rendere riutilizzabili dei template delle pipeline in modo alternativo. Dobbiamo però tenere in considerazione che questo trigger verrà eseguito solo nel momento in cui la pipeline definition (ovvero il codice YAML) si trova nel branch di default per quel repository, altrimenti non partirà perché Azure DevOps non è in grado di fare scouting su tutti i branch (dato che potrebbero essere centinaia o migliaia) e poiché non è consentita l'esecuzione dello stesso trigger da più branch in contemporanea.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Miglioramenti agli screen reader e al contrasto in Angular
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Usare una container image come runner di GitHub Actions
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Migliorare la sicurezza dei prompt con Azure AI Studio
Criptare la comunicazione con mTLS in Azure Container Apps
Recuperare l'ultima versione di una release di GitHub
Eliminare una project wiki di Azure DevOps
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Miglioramenti nelle performance di Angular 16
Migliorare l'organizzazione delle risorse con Azure Policy
Definire stili a livello di libreria in Angular
I più letti di oggi
- Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
- Supportare la sessione affinity di Azure App Service con Application Gateway
- Gli oggetti CallOut di Expression Blend 4.0
- Conoscere il rendering Server o WebAssembly a runtime in Blazor
- Utilizzare un DataContext specifico per la modalità design time di Blend e Visual Studio nei controlli Silverlight
- Più sezioni di configurazione attraverso il nodo <configSections /> del web.config