Promozione e distribuzione delle modifiche di inventario
L'implementazione di riferimento " DevSecOps " contribuisce a garantire che le modifiche al codice vengano sottoposte a revisione prima di essere integrate, promosse e distribuite in produzione. Vedi Procedure ottimali per la conformità della revisione del peer per saperne di più sulla revisione del peer per la fornitura di software sicuro e conforme.
Promozione delle voci di magazzino da fonte a filiali di destinazione
Per promuovere le modifiche del codice dal ramo di origine al ramo di destinazione (staging, prod) del repository di inventario, completare la seguente procedura:
-
Le pipeline di integrazione continua popolano il ramo di origine (master) con voci di inventario. Utilizzare la distribuzione continua pipeline di promozione per promuovere questo contenuto dal ramo di origine (master) al ramo di destinazione (staging o prod).
- Dalla dashboard cd - pipeline, fare clic su Esegui Pipeline.
- Seleziona Trigger di promozione manuale.
- Fai clic su Run. La pipeline - run crea una richiesta di unione per promuovere le modifiche del tuo codice dal ramo di origine al ramo di destinazione.
Attivazione manuale della promozione -
Approvare e unire la richiesta di pull.
- Clicca sulla pipeline - run e controlla il log di esecuzione del pipeline di promozione.
Registro di esecuzione MR - Individuare l' URL a della richiesta di unione e aprirla.
- Popolare i campi obbligatori (Priorità, Modifica richiesta assegnatario, Descrizione aggiuntiva e altri campi).
- Unire la richiesta di unione (MR) per promuovere le proprie modifiche dal ramo di origine al ramo di destinazione.
Ora, che le tue modifiche sono promosse al ramo di destinazione, puoi distribuirle utilizzando la pipeline di distribuzione continua.
Utilizzo della pipeline di validazione delle promozioni
Una volta aperta una PR di promozione, è possibile eseguire facoltativamente l'aggregazione delle prove e la generazione del riepilogo nella pipeline di convalida della promozione e impostare gli stati delle prove sulla richiesta di pull/merge della promozione (PR). La PR può essere creata dalla pipeline di promozione o manualmente nel repo di inventario. Per saperne di più sulla pipeline di convalida della promozione.
Distribuzione delle modifiche dall'ambiente di origine all'ambiente di destinazione
Gli ambienti di origine e di destinazione sono definiti al livello di pipeline di distribuzione continua.
A seconda delle impostazioni del trigger della tua pipeline di distribuzione continua impostazioni del trigger, la pipeline viene attivata automaticamente dopo che una richiesta di unione viene unita o la pipeline viene unita manualmente. Per unire manualmente la pipeline, fare clic su Esegui Pipeline e scegliere il trigger da eseguire.
La pipeline avvia e tags l'impegno corrente nel ripo dell'inventario con il Pipeline Run ID. La pipeline utilizza quel tag per prelevare il contenuto dal ramo di destinazione (prod) e calcola il delta di distribuzione tra l'impegno corrente
e il contenuto dell'ultimo deployment di successo. Il delta è contrassegnato dalla tag <target-environment>_latest, dove target-environment è il valore impostato nelle proprietà della tua pipeline di distribuzione
continua, come prod_latest.
La pipeline tenta di distribuire il contenuto. Durante la distribuzione, l'ID della richiesta di modifica è collegato all'impegno che la pipeline funziona con come tag. Quando la fase o l'attività di distribuzione viene completata con successo,
la pipeline si conclude aggiungendo il tag <target-environment>_latest al commit che hai promosso.
Per ulteriori informazioni sul flusso di lavoro dell'inventario, vedere Comprendere le pipeline DevSecOps.
Aggiornamento del percorso dell'immagine nell'inventario
Dopo che un'immagine è stata trasferita nel registro dei container di destinazione, aggiornare il percorso dell'immagine nell'inventario in modo che faccia riferimento all'immagine trasferita.
Utilizza il comando cocoa inventory update-locations per aggiornare la posizione dell'artefatto nel repository dell'inventario.
cocoa inventory update-locations \
--name="${inventory_image_type}/inventory.json" \
--org="<org>" \
--repo="<repo-name>" \
--location="prod#${inventory_target_name}@${DIGEST}" \
--environment="master"
Ad esempio:
cocoa inventory update-locations \
--name="<inventory-entry-name>/inventory.json" \
--org="<org-name>" \
--repo="<repo-name>" \
--location="prod#icr.io/.../baseimage:4.x.y@sha256:..." \
--environment="master"
Il parametro --location specifica il percorso dell'immagine di destinazione e il suo digest SHA-256. L'ubicazione ha il seguente formato:
<environment>#<image>:<tag>@sha256:<digest>
Ad esempio:
prod#icr.io/<namespace>/<repository>/baseimage:4.x.y@sha256:<digest>
Promozione e autografi
Prima di aggiornare l'inventario, l'immagine deve essere copiata nel registro di destinazione e deve presentare una firma valida per il riferimento all'immagine di destinazione.
Dopo aver promosso e firmato l'immagine, ottenere il digest dell'immagine nel registro di destinazione e utilizzare tale digest con cocoa inventory update-locations. {: important} Eseguire il comando cocoa inventory
update-locations dopo che l'immagine è stata promossa e firmata. L'inventario deve fare riferimento all'immagine presente nel registro di destinazione e al digest dell'immagine corrispondente.
Flusso di lavoro delle promozioni
Il flusso di lavoro per il rilascio è il seguente:
- Eseguire il trasferimento dell'immagine dal registro di origine a quello di destinazione.
- Recuperare il digest dell'immagine promossa nel registro di destinazione.
- Esegui il comando
cocoa inventory update-locationsspecificando il percorso dell'immagine di destinazione e il digest.
Il comando cocoa inventory update-locations aggiorna i metadati dell'inventario. Non copia né firma l'immagine del container.