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
Gestione degli stili CSS con le regole @layer
Creare una custom property in GitHub
Gestire gli accessi con Token su Azure Container Registry
Utilizzare DeepSeek R1 con Azure AI
Limitare le richieste lato server con l'interactive routing di Blazor 8
Eseguire script pre e post esecuzione di un workflow di GitHub
Creare una libreria CSS universale - Rotazione degli elementi
Generare la software bill of material (SBOM) in GitHub
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Creare un webhook in Azure DevOps
Utilizzare l'espressione if inline in una pipeline di Azure DevOps