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.mdIn 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
Rendere i propri workflow e le GitHub Action utilizzate più sicure
.NET Aspire per applicazioni distribuite
Mischiare codice server side e client side in una query LINQ con Entity Framework
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Importare repository da Bitbucket a GitHub Enterprise Cloud
Integrare SQL Server in un progetto .NET Aspire
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Introduzione ai web component HTML
Supportare la sessione affinity di Azure App Service con Application Gateway


