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

  1. Ottenere gli input per la promozione e la richiesta di pull / unione della promozione.
  2. Promuovere le voci di inventario dall'ambiente di origine all'ambiente di destinazione.
  3. 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.
  4. Facoltativo. Impostare gli stati delle prove e aggiungere il riepilogo delle prove aggregate alla richiesta di pull / unione della promozione.
  5. Unire la richiesta di pull / merge.
  6. 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-tests o setup, 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.

Fasi e attività del processo di promozione
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 NA No
inventory-finish Raccogliere e caricare i file di log, gli artefatti e le prove nell'archivio delle prove. 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-tests o setup, 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.

Fasi e attività del flusso di lavoro per la convalida delle promozioni
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 NA No
validation-finish Raccogliere e caricare i file di log, gli artefatti e le prove nell'archivio delle prove. 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?

Deprecata L'opzione opt-in-promotion-validation che veniva usata per avviare automaticamente la pipeline di validazione delle promozioni su una richiesta di pull è deprecated a favore dell'opzione 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.

  1. Vai alla pagina Trigger della pipeline CD a cui vuoi aggiungerla.
  2. Seleziona Aggiungi> Git Repository per aggiungere un nuovo trigger.
  3. 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-gitlab come EventListener.
    • 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.
  4. Fai clic su Aggiungi.
  5. Impostare il trigger su On.

Input

Input della pipeline di promozione
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.

Parametri 2.Optional della tabella
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

Richiesta di promozione e unione
Richiesta di promozione e unione

Quando viene eseguita la convalida della RdA della promozione (facoltativa), lo stato della prova viene impostato sulla richiesta di estrazione / unione.

Stato delle prove facoltativo impostato sulla richiesta di promozione e unione
Stato delle prove sulla richiesta di promozione e unione

Il riepilogo delle prove aggregate (che possono provenire da più applicazioni nell'inventario) viene visualizzato in formato tabella come commento nella RdA.

Riassunto facoltativo delle evidenze aggregate catturato in un commento sulla richiesta di promozione e unione
Riassunto aggregato delle evidenze nella richiesta di promozione e unione

Passo successivo

Una volta terminata correttamente la pipeline di promozione, è possibile procedere con la pipeline CD.