Pipeline promozione
La pipeline di promozione promuove le voci di inventario da un ambiente ad un altro e crea una richiesta di estrazione / unione della promozione.
Separazione delle funzioni durante le promozioni
-
Promozioni ottenute principalmente attraverso il flusso di lavoro delle Pull Request
- → Creare un PR di promozione (ad esempio, dal ramo dell'ambiente di origine a quello di destinazione)
- → Esaminare/modificare la PR (compresa la verifica dello stato di convalida della PR)
- → Unire la pull request nel ramo dell'ambiente di destinazione
- → Esegui la pipeline di distribuzione del CD (al commit, a tempo o con attivazione manuale)
- → Ripetere l'operazione per il ramo dell'ambiente successivo
- → È possibile avere un numero arbitrario di rami di ambiente
-
Ruoli
- Sviluppatore: esegue il commit del codice, determinando l'aggiornamento dell'inventario principale (non di produzione) da parte della pipeline di CI
- Responsabile delle operazioni di promozione / Release Manager: avvia la pipeline di promozione (main→staging e/o staging→prod), creando PR con controllo dello stato per il gating (applicato tramite gli ACL della toolchain e le protezioni dei rami di inventario)
- Operazioni di produzione / Responsabile dell'approvazione: verificare e integrare il PR di promozione nel ramo di produzione. Eseguire le pipeline di produzione. (garantito dalla protezione del ramo "inventory")
-
Sfruttare i carichi di lavoro di catene di strumenti CD distinte per l'ambiente di staging e quello di produzione (Ops distinte)
-
Ciò significa che uno sviluppatore può preparare una modifica, ma non può implementarla unilateralmente in produzione se la protezione del ramo richiede l'approvazione di un altro utente.
-
Il PR di promozione diventa il documento ufficiale di approvazione della modifica, mentre la cronologia delle fusioni fornisce prove verificabili su chi abbia approvato la promozione in produzione e quando.
Fasi della pipeline della promozione
- Ottenere gli input per la promozione e la richiesta di pull / unione della promozione.
- Promuovere le voci di inventario dall'ambiente di origine all'ambiente di destinazione.
- Creare la richiesta di estrazione / unione della promozione. Modificare la richiesta di estrazione / unione per indicare quali modifiche eseguire. Controlla i campi facoltativi e obbligatori.
- Facoltativo. Impostare gli stati delle prove e aggiungere il riepilogo delle prove aggregate alla richiesta di pull / unione della promozione.
- Unire la richiesta di pull / merge.
- Invia una notifica Slack se la funzione è attivata.
Fasi e attività
La tabella seguente elenca le attività eseguite in una pipeline di promozione. Inoltre, la tabella offre anche una panoramica di ciascuna di queste fasi:
-
Attività o fase: si riferisce al nome della fase così come definito nel file di configurazione
.pipeline-config.yaml. -
Breve descrizione: Questa sezione fornisce una spiegazione sintetica delle azioni eseguite durante lo svolgimento della fase.
-
Personalizzazione consentita : indica se gli utenti hanno la possibilità di modificare o sostituire il comportamento predefinito della fase inserendo uno script personalizzato nel file
.pipeline-config.yaml. -
Implementazione di riferimento predefinita: indica se le pipeline di DevSecOps dispongono di un'implementazione predefinita o di default per la fase. In particolare, per alcune fasi come
unit-testsosetup, la pipeline DevSecOps non offre alcuna implementazione predefinita. Gli utenti devono invece fornire script personalizzati o codice su misura per le esigenze della propria applicazione. -
Raccolta delle prove: indica se la fase prevede la raccolta delle prove standard. Quando una pipeline “ DevSecOps ” fornisce un’implementazione di riferimento per una fase, la raccolta delle prove viene eseguita immediatamente, senza necessità di configurazioni aggiuntive. Tuttavia, se l'utente decide di modificare o sostituire queste fasi predefinite, deve assicurarsi che le proprie implementazioni personalizzate prevedano un'adeguata raccolta delle prove. La stessa responsabilità ricade sugli utenti nelle fasi in cui la pipeline “ DevSecOps ” non fornisce un’implementazione predefinita, rendendo necessario che siano loro a procedere alla raccolta delle prove. La colonna indica l'entità ( Utente/Pipeline ) responsabile dell'esecuzione della raccolta delle prove.
-
Salto consentito (applicabile alla versione >= v10 ): indica se gli utenti possono scegliere di non eseguire questa fase impostando la proprietà "skip" su "true" nel file
.pipeline-config.yaml. Si raccomanda tuttavia di prestare attenzione nell'utilizzo di questa funzione, soprattutto nelle fasi dedicate alla raccolta delle prove. Saltare tali fasi potrebbe comportare la perdita di prove essenziali per la compilazione.
| Attività o fase | Descrizione breve | Personalizzazione consentita in .pipeline-config.yaml |
Implementazione di riferimento predefinita | Raccolta delle prove | È consentito saltare |
|---|---|---|---|---|---|
inventory-promotion |
Crea una pull request per la promozione. | No | Sì | NA | No |
inventory-finish |
Raccogliere e caricare i file di log, gli artefatti e le prove nell'archivio delle prove. | Sì | No | NA | No |
Per ulteriori informazioni su come personalizzare le fasi utilizzando il file .pipeline-config.yaml , consultare le sezioni “Script personalizzati ” e “Elenchi dei parametri della pipeline ”.
Esecuzione della pipeline di promozione
Utilizzare il trigger della promozione manuale per eseguire la pipeline della promozione. Se il ramo di origine (master) è più avanti del ramo di destinazione (prod), la pipeline crea una richiesta di pull / unione di promozione che è possibile
rivedere e modificare. Se il ramo di origine è dietro la destinazione, la pipeline di promozione ha esito negativo con il messaggio All changes have already been promoted.
Per modificare i valori predefiniti della richiesta di pull / unione della promozione o per eseguire la promozione da un'origine alternativa a una destinazione, gli utenti possono modificare gli input dalla IU delle variabili di ambiente della pipeline.
Prima di eseguire la pipeline di distribuzione continua, assicurarsi che la richiesta di pull / unione della promozione sia unita. Puoi trovare la richiesta URL pull/merge nei log della pipeline.
Per ulteriori informazioni sul processo di inventario e promozione, vedere Promozione inventario.
Promozione parziale degli articoli di inventario
Il metodo di promozione parziale consente alla pipeline di promozione di promuovere un sottoinsieme selezionato di inventario disponibile.
In questo contesto, una voce dell'inventario corrisponderebbe a un singolo file (del tipo "inventario") presente nel repository dell'inventario; tale voce corrisponderebbe a un nome file univoco nel filesystem locale
Utilizzando i parametri inventory-include E inventory-exclude abilita il metodo di promozione parziale.
Quando si usa inventory-include, i modelli/nomi file forniti nella proprietà dell'ambiente si risolvono nelle rispettive voci e vengono promossi dalla pipeline. Allo stesso modo, le voci fornite in inventory-exclude essere escluso dalla promozione.
Il formato utilizza il modello glob (supporta anche percorsi completi), in modo simile a quanto seguito nella pipeline CC. Per ulteriori informazioni sui modelli glob, consultare glob Manuale.
Filtraggio applicato nella promozione parziale
La promozione parziale applica due livelli di filtraggio: utilizzando il file .inventoryignore file e applicando filtri in base ai modelli glob forniti inventory-include E inventory-exclude
Utilizzando il file .inventoryignore
Per escludere una serie di file o cartelle per impostazione predefinita per ogni esecuzione di promozione parziale nonché per l'esecuzione della pipeline CD, è possibile aggiungere l'elenco di file/cartelle alla .inventoryignore file per escludere tali voci.
L'elenco delle voci disponibili (che la pipeline può promuovere) è disponibile dopo aver filtrato le voci dal file .inventoryignore file.
La pipeline cerca il file .inventoryignore file nella radice del repository. Se preferisci un nome diverso per il file di esclusione dell'inventario, puoi specificarlo impostando il file inventory-ignore-file key
come proprietà dell'ambiente all'interno della pipeline. Assicurati che questo file sia nella radice del repository dell'inventario.
Utilizzando il parametro inventory-include
L'elenco delle voci da promuovere dopo aver filtrato le voci fornite da inventory-include e/o inventory-exclude
Se entrambi inventory-include E inventory-exclude sono presenti,inventory-include ha la precedenza, e poi inventory-exclude esclude gli elementi dal sottoinsieme definito dall'elenco di
inclusione.
Se viene fornita una di queste variabili, la pipeline proverà a risolvere i percorsi completi dei modelli glob o semplicemente i nomi dei file diretti e procederà con la promozione parziale.
Solo l'elenco comune di voci tra i 2 livelli di filtro viene promosso dalla pipeline.
Esempio di utilizzo dei parametri inventory-include e inventory-exclude
Questa sezione mostra esempi di utilizzo dei modelli glob e anche di incorporarli nel file inventory-include E inventory-exclude parametri. Di seguito è riportato un esempio di struttura di directory per un repository
di inventario, contenente microservizi, file di configurazione (nidificati) e grafici helm.
cd-pipeline-deps
my-application-plugin-component-config
my-application-plugin-component-diagnostic-monitor
configuration # directory entry
configuration/my-staging-region # directory entry
configuration/my-staging-region/environment-1-cluster # directory entry
configuration/my-staging-region/environment-1-cluster/serviceA-component_config
configuration/my-staging-region/environment-1-cluster/serviceB-system_config
configuration/my-staging-region/environment-1-cluster/serviceC-params_config
configuration/serviceX-dashboard-setup_helm
configuration/serviceY-releases_helm
my-application-task-runner
my-application-dashboard
my-application-dashboard_deployment
my-application-module
my-application-module_deployment
.inventoryignore
global_deployment
README.md
Per selezionare tutte le voci del sottomodulo di un componente
inventory-include impostato :*plugin-component*
Voci di inventario selezionate:
my-application-plugin-component-config
my-application-plugin-component-diagnostic-monitor
Per selezionare tutte le carte timone in una determinata cartella di configurazione
inventory-include impostato :configuration/*helm
Voci di inventario selezionate:
configuration/serviceX-dashboard-setup_helm
configuration/serviceY-releases_helm
Per selezionare tutti i file di configurazione di un particolare ambiente
inventory-include impostato :configuration/my-staging-region/environment-1-cluster/*_config
Voci di inventario selezionate:
configuration/my-staging-region/environment-1-cluster/serviceA-component_config
configuration/my-staging-region/environment-1-cluster/serviceB-system_config
configuration/my-staging-region/environment-1-cluster/serviceC-params_config
Per selezionare un solo componente
inventory-include impostato :my-application-dashboard*
Voci di inventario selezionate:
my-application-dashboard
my-application-dashboard_deployment
Utilizzo della combinazione di modelli glob in inventory-include
inventory-include impostato :*plugin-component*,configuration/*helm
Voci di inventario selezionate:
my-application-plugin-component-config
my-application-plugin-component-diagnostic-monitor
configuration/serviceX-dashboard-setup_helm
configuration/serviceY-releases_helm
Utilizzo della combinazione di modelli glob nell'esclusione inventario
inventory-exclude impostato :configuration/**, my-application-dashboard*
Voci di inventario selezionate:
cd-pipeline-deps
my-application-plugin-component-config
my-application-plugin-component-diagnostic-monitor
my-application-task-runner
my-application-module
my-application-module_deployment
.inventoryignore
global_deployment
Richieste di pull / unione promozione
Le informazioni dal corpo della richiesta di pull / unione della promozione vengono utilizzate per creare la richiesta di modifica. I file modificati dalla richiesta di pull / unione della promozione rappresentano le voci, ad esempio le immagini,
distribuite dalla pipeline di distribuzione continua. Se le modifiche sono state apportate a causa di un'emergenza, la richiesta di estrazione / unione della promozione è contrassegnata con un'etichetta di emergenza. Anche la richiesta di
modifica creata dalla pipeline di distribuzione continua è contrassegnata come emergency.
La prova raccolta nella pipeline di integrazione continua viene riepilogata e allegata alla richiesta di modifica nella pipeline di distribuzione continua.
Pipeline di convalida promozione
Una volta aperta una RdA della promozione, è possibile facoltativamente eseguire l'aggregazione della prova e la creazione di riepilogo nella pipeline di convalida della promozione e impostare gli stati della prova sulla richiesta di pull / unione della promozione (RdA). La RdA può essere creata dalla pipeline di promozione o manualmente nel repository di inventario.
La pipeline abilita la convalida anticipata della PR della promozione prima che la PR venga unita al ramo di destinazione (ambiente). In base allo stato della RdA, gli utenti possono procedere con la promozione (quando tutti gli stati della prova sono verdi) oppure scegliere di risolvere il problema nella pipeline di integrazione continua (quando lo stato della prova è rosso).
Inoltre, la pipeline di convalida aggiunge anche il riepilogo aggregato delle prove relative a una o più applicazioni presenti nell'inventario alla richiesta di promozione pull/merge sotto forma di commento, in un formato tabellare di facile consultazione (come mostrato nella Figura 3). La tabella fornisce link utili, come link a pipeline, repository di app e problemi creati per ciascuna delle applicazioni.
Per impostazione predefinita, ogni riga nella tabella Dettagliato stato delle prove corrisponde a un contesto applicativo fornito da un repository di origine utilizzato per creare gli artefatti a cui si fa riferimento nelle voci dell'inventario.
Questo raggruppamento predefinito dell'applicazione può essere personalizzato in base a un valore di raggruppamento ottenuto applicando il filtro JSON (definito nella proprietà application-group-by-filter) su ciascun file di voce
dell'inventario.
Mentre la convalida è in corso, l'unione della richiesta di estrazione / unione della promozione è bloccata. Una volta completata la pipeline di convalida, lo stato della prova viene impostato sulla richiesta di pull / unione. Facendo clic su ciascuna voce nello stato, l'utente viene condotto allo stage specifico nell'esecuzione della pipeline IC corrispondente.
Fasi e attività
La tabella seguente elenca le attività eseguite in una pipeline di convalida della promozione. Inoltre, la tabella offre anche una panoramica di ciascuna di queste fasi:
-
Attività o fase: si riferisce al nome della fase così come definito nel file di configurazione
.pipeline-config.yaml. -
Breve descrizione: Questa sezione fornisce una spiegazione sintetica delle azioni eseguite durante lo svolgimento della fase.
-
Personalizzazione consentita : indica se gli utenti hanno la possibilità di modificare o sostituire il comportamento predefinito della fase inserendo uno script personalizzato nel file
.pipeline-config.yaml. -
Implementazione di riferimento predefinita: indica se le pipeline di DevSecOps dispongono di un'implementazione predefinita o di default per la fase. In particolare, per alcune fasi come
unit-testsosetup, la pipeline DevSecOps non offre alcuna implementazione predefinita. Gli utenti devono invece fornire script personalizzati o codice su misura per le esigenze della propria applicazione. -
Raccolta delle prove: indica se la fase prevede la raccolta delle prove standard. Quando una pipeline “ DevSecOps ” fornisce un’implementazione di riferimento per una fase, la raccolta delle prove viene eseguita immediatamente, senza necessità di configurazioni aggiuntive. Tuttavia, se l'utente decide di modificare o sostituire queste fasi predefinite, deve assicurarsi che le proprie implementazioni personalizzate prevedano un'adeguata raccolta delle prove. La stessa responsabilità ricade sugli utenti nelle fasi in cui la pipeline “ DevSecOps ” non fornisce un’implementazione predefinita, rendendo necessario che siano loro a procedere alla raccolta delle prove. La colonna indica l'entità ( Utente/Pipeline ) responsabile dell'esecuzione della raccolta delle prove.
-
Salto consentito (applicabile alla versione >= v10 ): indica se gli utenti possono scegliere di non eseguire questa fase impostando la proprietà "skip" su "true" nel file
.pipeline-config.yaml. Si raccomanda tuttavia di prestare attenzione nell'utilizzo di questa funzione, soprattutto nelle fasi dedicate alla raccolta delle prove. Saltare tali fasi potrebbe comportare la perdita di prove essenziali per la compilazione.
| Attività o fase | Descrizione breve | Personalizzazione consentita in .pipeline-config.yaml |
Implementazione di riferimento predefinita | Raccolta delle prove | È consentito saltare |
|---|---|---|---|---|---|
inventory-validation |
Convalida la richiesta di pull presentata per la promozione. | No | Sì | NA | No |
validation-finish |
Raccogliere e caricare i file di log, gli artefatti e le prove nell'archivio delle prove. | Sì | No | NA | No |
Per ulteriori informazioni su come personalizzare le fasi utilizzando il file .pipeline-config.yaml , consultare le sezioni “Script personalizzati ” e “Elenchi dei parametri della pipeline ”.
Come accettare la convalida della promozione?
Deprecated L'opzione opt-in-promotion-validation , utilizzata per avviare automaticamente la pipeline di convalida delle promozioni su una pull request, è stata sostituita
da deprecated a favore di Git Promotion Validation trigger``. Se hai questa proprietà nelle impostazioni di ambiente, visualizzerai l'avviso di obsolescenza nei log della pipeline e nella notifica
Slack.
Come abilitare la convalida della promozione?
Per tutte le nuove catene di strumenti CD, viene creato automaticamente un trigger denominato “ Git ” (Convalida promozione) e impostato come abilitato.
Per abilitare il trigger Git Promotion Validation su una pipeline esistente, puoi utilizzare la seguente procedura.
- Vai alla pagina Trigger della pipeline CD a cui vuoi aggiungerla.
- Seleziona Aggiungi> Git Repository per aggiungere un nuovo trigger.
- Immettere le seguenti informazioni richieste per il trigger:
- Fornire un nome trigger. Ad esempio: Git Promotion Validation Trigger.
- Specificare
promotion-validation-listener or promotion-validation-listener-gitlabcomeEventListener. - Selezionare il repository di inventario corrispondente per la pipeline per il campo Repository.
- Selezionare il nome dell'ambiente di destinazione per il ramo.
- Selezionare la casella per il campo Quando una richiesta di pull viene aperta o aggiornata.
- Fai clic su Aggiungi.
- Impostare il trigger su On.
Input
| Variabile | Descrizione | Valore predefinito | Obbligatorio o facoltativo |
|---|---|---|---|
| ambiente - origine | Il ramo di inventario di origine della promozione. | master |
Obbligatorio |
| ambiente - destinazione | Il ramo di inventario di destinazione della promozione. | prod |
Obbligatorio |
| priorità | La priorità della modifica. | critical, high, moderate, low o planning |
Facoltativo |
| assegnatario | L'ID funzionale o l'e-mail della persona a cui assegnare la richiesta di modifica nell'organizzazione della richiesta di modifica IBM Cloud. | '' |
Facoltativo |
| Descrizione | La descrizione della modifica aggiunta alla descrizione della richiesta di modifica. | '' |
Facoltativo |
| scopo | Il motivo per cui la modifica è richiesta. | '' |
Facoltativo |
| impatto | Ulteriori note sull'impatto di questa implementazione di modifica. | '' |
Facoltativo |
| file-ignora-inventario | Nome file personalizzato per il file .inventoryignore, questo file contiene l'elenco di file/cartelle da ignorare a ogni esecuzione di promozione parziale. | .inventoryignore |
Facoltativo |
| inventario-incluso | Voci di inventario da promuovere selettivamente (promozione parziale). | '' |
Facoltativo |
| esclusione inventario | Voci di inventario da escludere nella promozione parziale. | '' |
Facoltativo |
| piano di backout | Il piano che descrive come viene eseguito il rollback della modifica in un errore. | '' |
Facoltativo |
| notifiche slack | Lo switch per attivare o disattivare l'integrazione Slack | 0 | Facoltativo |
| impatto sul cliente | Impatto della modifica sui clienti. | critical, high, moderate, low o no_impact |
Facoltativo |
Risultati ed effetti
- Notifica Slack
- Richiesta di estrazione / unione promozione
È necessario modificare la richiesta di estrazione / unione se non sono stati forniti i parametri facoltativi.
| Variabile | Descrizione | Obbligatorio o facoltativo |
|---|---|---|
| Priority (Priorità) | Uno dei seguenti valori: Critical, High, Moderate, Low, Planning |
Obbligatorio |
| Assegnatario richiesta di modifica | L'ID email dell'assegnatario. | Obbligatorio |
| Descrizione aggiuntiva | La descrizione delle modifiche nell'applicazione. | Facoltativo |
| Scopo | Lo scopo delle modifiche apportate alla domanda. | Facoltativo |
| Spiegazione dell'impatto | L'impatto della modifica al comportamento o all'ambiente dell'applicazione. | Facoltativo |
| Impatto cliente | Uno dei seguenti valori: Critical, High, Moderate, Low, No_Impact |
Obbligatorio |
| Impatto distribuzione | Uno dei seguenti valori: Small, Large |
Obbligatorio |
| Piano di backout | La procedura per eseguire il backout se la distribuzione non riesce. | Facoltativo |
Quando viene eseguita la convalida della RdA della promozione (facoltativa), lo stato della prova viene impostato sulla richiesta di estrazione / unione.
Il riepilogo delle prove aggregate (che possono provenire da più applicazioni nell'inventario) viene visualizzato in formato tabella come commento nella RdA.
Funzionalità di unione automatica per le pull request relative alle promozioni
La funzione di unione automatica unisce automaticamente le richieste di pull relative alle promozioni quando tutti i controlli di stato della Pipeline di convalida delle promozioni hanno esito positivo. Questa funzionalità opzionale semplifica il flusso di lavoro relativo alle promozioni, eliminando la necessità di eseguire operazioni di unione manuali al termine della convalida.
Prerequisiti
Prima di attivare la funzione di unione automatica, assicurati che siano soddisfatti i seguenti requisiti:
-
Analisi della sicurezza: valuta la possibilità di verificare con il tuo team di sicurezza che sia d'accordo con il rischio derivante dall'approvazione automatica e dal fatto di non richiedere la revisione tra pari delle pull request di promozione. Spetta a ciascuna organizzazione decidere se è disposta ad accettare tale rischio per la sicurezza.
-
Parametri della pipeline di promozione: verificare che i parametri della pipeline di promozione siano configurati con i valori predefiniti appropriati.
-
Pipeline di convalida delle promozioni: assicurarsi che la pipeline di convalida delle promozioni sia abilitata e configurata per l'esecuzione in occasione degli eventi relativi alle richieste di pull.
I seguenti requisiti si applicano al repository di inventario su GitHub:
-
GitHub Impostazioni del repository: abilitare il merge automatico a livello del repository GitHub. Per ulteriori informazioni, consulta la guida " Gestione dell'unione automatica delle richieste di pull nel tuo repository ".
-
Regole di protezione dei rami: configurare il ramo di destinazione del repository di inventario con regole di protezione dei rami adeguate per supportare il merge automatico. Per ulteriori informazioni, consulta la sezione " Unire automaticamente una pull request ".
Attivazione dell'unione automatica
Per abilitare la funzione di unione automatica nella pipeline delle promozioni:
- Accedi alla pipeline "Promozione CD" nella console di IBM Cloud.
- Fare clic su " Proprietà ambiente " per modificare la pipeline o un trigger specifico.
- Aggiungi una nuova proprietà di testo con i seguenti valori:
- Nome:
enable-auto-merge - Valore:
true
- Nome:
Qualsiasi valore diverso da " true " viene ignorato e la funzione di unione automatica rimane disabilitata.
Come funziona l'unione automatica
Quando si esegue la pipeline "Promozione" con l'unione automatica abilitata, si verifica il seguente flusso di lavoro:
- La pipeline "Promotion" crea una pull request di promozione nel repository dell'inventario.
- La pipeline di convalida della promozione viene avviata automaticamente al momento della creazione della pull request.
- La fusione automatica è abilitata per la pull request, in attesa che la convalida vada a buon fine.
- La pipeline di convalida della promozione esegue controlli di conformità e imposta controlli di stato sulla pull request.
- Se tutti i controlli di conformità hanno esito positivo, la pull request viene automaticamente integrata.
- Se una verifica di conformità non va a buon fine, la pull request rimane aperta e richiede un intervento manuale.
È possibile monitorare lo stato del processo di unione automatica nella pagina della richiesta di pull su GitHub,, dove è possibile visualizzare i controlli in sospeso e lo stato dell'unione automatica.
Aspetti importanti da considerare quando si utilizza la funzione di unione automatica
L'attivazione della funzione di unione automatica per la promozione a prod comporta l'assenza di controlli manuali volti a impedire che le modifiche passino dall'ambiente precedente all'ambiente prod. È quindi importante
definire una procedura che impedisca il passaggio all'ambiente prod prima che l'ambiente precedente sia stato convalidato con esito positivo. Finché tale meccanismo non sarà abilitato, ti consigliamo di non attivare il merge
automatico nell'ambiente di produzione e di utilizzarlo solo per gli altri ambienti, come ad esempio staging.
Attenzione particolare al programma “ Git Repos and Issue Tracking ” (GRIT) e al percorso di convalida delle promozioni
Il trigger di convalida della promozione " Git ", quando configurato su un repository di inventario " Git Repos and Issue Tracking " ( GRIT)/GitLab ), richiede una configurazione speciale per l'attivazione in base all'evento.
Quando si abilita il merge automatico su una determinata richiesta di merge, viene creato un evento di aggiornamento che (ri)avvierà la pipeline di convalida della promozione. È necessario evitare questo comportamento predefinito configurando
il trigger utilizzando un'espressione CEL come quella riportata di seguito, configurata per reagire agli eventi provenienti dal ramo " staging ":
header['x-gitlab-event'] == 'Merge Request Hook' && body.object_attributes.target_branch.matchesGlob('staging')
&& (body.object_attributes.action == 'open' || body.object_attributes.action == 'update' || body.object_attributes.action == 'reopen')
&& (body.object_attributes.source_project_id == body.object_attributes.target_project_id) && !(body.object_attributes.action == 'update' && !body.changes.merge_when_pipeline_succeeds.previous && body.changes.merge_when_pipeline_succeeds.current)
Passaggi obbligatori
- Disattiva il trigger di promozione “ Git ” della fase precedente e imposta “
prod”. - Crea un trigger manuale della pipeline per trasferire le modifiche dalla fase precedente all'ambiente
prod, impostando l'enable-auto-mergesutrue.
Approcci di implementazione opzionali
È possibile implementare diverse soluzioni. Di seguito sono riportati due approcci consigliati:
-
Convalida della fase finale: nell'ambiente precedente della pipeline CD (ad esempio, pre-produzione), utilizzare la
prod-finishfase per verificare cheprod-change-requestoprod-acceptance-tests(o entrambi) siano stati completati con successo. Quindi, avvia la pipeline di promozione versoprodutilizzando l'API della pipeline. -
Raccolta delle prove in ambiente pre-produzione: applicare la raccolta delle prove in ambiente pre-produzione per bloccare la distribuzione all’
prode qualora vengano rilevati errori nelle prove in ambiente pre-produzione (ad esempio, errori nei test di accettazione).
Passo successivo
Una volta terminata correttamente la pipeline di promozione, è possibile procedere con la pipeline CD.