Promotion et déploiement des modifications d'inventaire

L'implémentation de référence DevSecOps facilite l'application de la révision des modifications de code avant qu'elles ne soient fusionnées, promues et déployées en production. Voir Meilleures pratiques pour la conformité à l'examen par les pairs pour en savoir plus sur l'examen par les pairs pour la distribution de logiciels sécurisés et conformes.

Promotion des entrées d'inventaire à partir des branches source vers les branches cible

Pour pousser les modifications de code de la branche source vers la branche cible (staging, prod) de votre référentiel d'inventaire, procédez comme suit :

  1. Les pipelines d'intégration continue alimentent la branche source (maître) avec des entrées d'inventaire. Utilisez le pipeline de déploiement continu pour transférer ce contenu de votre branche source (master) vers la branche cible (staging ou prod).

    1. Dans le tableau de bord cd-pipeline, cliquez sur Exécuter le pipeline.
    2. Sélectionnez Manual Promotion Trigger.
    3. Cliquez sur Exécuter. L'exécution de pipeline crée une demande de fusion pour promouvoir vos modifications de code depuis la branche source vers la branche cible.

    Déclencheur de promotion manuelle
    Déclencheur de promotion manuelle

  2. Approuvez et fusionnez la demande d'extraction.

    1. Cliquez sur l'exécution de pipeline et vérifiez le journal d'exécution du pipeline de promotion.

    Journal d'exécution du RM
    Journal d'exécution du RM

    1. Localisez l'URL de la demande de fusion et ouvrez celle-ci.
    2. Renseignez les zones obligatoires (Priorité, Destinataire de la demande de changement, Description supplémentaire et autres zones).
    3. Fusionnez la demande de fusion (MR) pour transférer vos modifications de la branche source vers la branche cible.

Maintenant que vos modifications ont été intégrées à la branche cible, vous pouvez les déployer à l'aide du pipeline de déploiement continu.

Utilisation du pipeline de validation des promotions

Une fois qu'un PR de promotion est ouvert, vous pouvez éventuellement procéder à l'agrégation des preuves et à la génération d'un résumé dans le pipeline de validation de la promotion, et définir les statuts des preuves sur la demande de fusion/tirage de la promotion (PR). Le PR peut être créé par le pipeline de promotion ou manuellement dans le répertoire d'inventaire. En savoir plus sur le pipeline de validation de la promotion.

Déploiement des changements à partir de l'environnement source vers l'environnement cible

Les environnements source et cible sont définis au niveau du pipeline de déploiement continu.

propriétés du pipeline de déploiement continu

Propriétés du pipeline de déploiement continu
Propriétés du pipeline de déploiement continu

En fonction des paramètres de déclenchement de votre pipeline de déploiement continu, celui-ci est soit déclenché automatiquement après la fusion d’une demande de fusion, soit déclenché manuellement. Pour fusionner manuellement le pipeline, cliquez sur Run Pipeline et choisissez le déclencheur à exécuter.

Le pipeline démarre et étiquette la validation en cours dans le référentiel d'inventaire avec l'ID d'exécution de pipeline. Le pipeline utilise cette étiquette pour extraire le contenu de la branche cible (production) et calcule l'écart de déploiement entre la validation en cours et le contenu du dernier déploiement réussi. Le delta est indiqué par la <target-environment>_latest balise, où est target-environment la valeur définie dans les propriétés de votre pipeline de déploiement continu, par exemple prod_latest.

Le pipeline tente de déployer le contenu. Lors du déploiement, l'ID de demande de changement est attaché à la validation gérée par le pipeline en tant qu'étiquette. Lorsque la phase de déploiement ou la tâche s'achève avec succès, le pipeline se termine en ajoutant la balise <target-environment>_latest au commit que vous avez promu.

Git Repos and Issue Tracking repo tags repo tags
Git Repos and Issue Tracking

Pour plus d'informations sur le flux de travaux d'inventaire, voir Présentation de DevSecOps.

Mise à jour de l'emplacement de l'image dans l'inventaire

Une fois qu'une image a été déployée vers le registre de conteneurs cible, mettez à jour l'emplacement de l'image dans l'inventaire afin qu'il fasse référence à l'image déployée.

Utilisez la commande cocoa inventory update-locations pour mettre à jour l'emplacement de l'artefact dans le référentiel d'inventaire.

cocoa inventory update-locations \
  --name="${inventory_image_type}/inventory.json" \
  --org="<org>" \
  --repo="<repo-name>" \
  --location="prod#${inventory_target_name}@${DIGEST}" \
  --environment="master"

Exemple :

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"

Le paramètre --location spécifie l’emplacement de l’image cible et son résumé SHA-256. L'emplacement se présente sous le format suivant :

<environment>#<image>:<tag>@sha256:<digest>

Exemple :

prod#icr.io/<namespace>/<repository>/baseimage:4.x.y@sha256:<digest>

Promotion et signature d'images

L'image doit être copiée dans le registre cible et disposer d'une signature valide pour la référence d'image de destination avant que l'inventaire ne soit mis à jour.

Une fois l'image déployée et signée, récupérez le résumé de l'image dans le registre cible et utilisez ce résumé avec cocoa inventory update-locations. {: important} À exécuter une cocoa inventory update-locations fois que l'image a été mise en production et signée. L'inventaire doit faire référence à l'image dans le registre cible et au condensé d'image correspondant.

Processus de promotion

Le processus de publication est le suivant :

  1. Transférez l'image du registre source vers le registre cible.
  2. Récupérer le résumé de l'image mise en avant dans le registre cible.
  3. Exécutez la commande cocoa inventory update-locations en indiquant l'emplacement de l'image cible et son résumé.

La commande cocoa inventory update-locations met à jour les métadonnées d'inventaire. Il ne copie ni ne signe l'image du conteneur.