Ci sono diversi modi per far partire un workflow di deployment. Sicuramente la strada giusta sarebbe quella di avere una pipeline di continuous deployment configurata, certo, ma non sempre è realizzabile, specie quando abbiamo più ambienti sulla quale dover fare test. Supponiamo di avere un flow di sviluppo basato su ChatOps, in cui la comunicazione avviene tramite commenti su issue e/o label: potremmo voler usare determinate label come 'dev', 'staging', 'prod' per far partire il deployment sugli ambienti corrispondenti.
Il workflow, dovrà prima di tutto essere configurato con gli eventi corretti. Poichè stiamo parlando di issue e label, probabilmente siamo nel contesto di una pull request:
on: pull_request: types: [labeled]
Il workflow verrà quindi eseguito all'aggiunta di una label sulla PR. Possiamo quindi eseguire un workflow unico, con step di deployment differenziati in base alla label:
steps: - name: Deploy (DEV) if: contains(github.event.pull_request.labels.*.name, 'stage') run: echo 'Deploying in development environment...' - name: Deploy (STAGING) if: contains(github.event.pull_request.labels.*.name, 'staging') run: echo 'Deploying in staging environment...' - name: Deploy (PROD) if: contains(github.event.pull_request.labels.*.name, 'prod') run: echo 'Deploying in production environment...'
Possiamo usare il costrutto '*' per recuperare, con uno statement di if in linea, tutte le label associate alla pull request che ha invocato il workflow. Tramite la keyword contains, andiamo poi a verificare che la nostra chiave sia contenuta all'interno della lista. Lo step che ha la corrispondenza con la label verrà quindi eseguito e il deploy completato.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Generare token per autenicarsi sulle API di GitHub
Testare l'invio dei messaggi con Event Hubs Data Explorer
Disabilitare automaticamente un workflow di GitHub
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Utilizzare un service principal per accedere a Azure Container Registry
Recuperare l'ultima versione di una release di GitHub
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Eseguire i worklow di GitHub su runner potenziati
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Ottimizzazione dei block template in Angular 17
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Creare una libreria CSS universale: Cards
- Eseguire script pre e post esecuzione di un workflow di GitHub