Bekanntgabe und Umsetzung von Bestandsänderungen

Die DevSecOps-Referenzimplementierung hilft dabei, die Prüfung von Codeänderungen zu erzwingen, bevor sie zusammengeführt, hochgestuft und in der Produktion eingesetzt werden. Weitere Informationen zur Peerprüfung für die Bereitstellung sicherer und konformer Software finden Sie unter Best practices for peer review compliance.

Bestandseinträge von Quell- auf Zielverzweigungen umstufen

Um Codeänderungen vom Quellzweig in den Zielzweig (Staging, Prod) Ihres Inventar-Repositorys zu übertragen, führen Sie die folgenden Schritte aus:

  1. Die Pipelines für kontinuierliche Integration füllen die Quellenverzweigung (Master) mit Bestandseinträgen. Verwenden Sie die Pipeline für die kontinuierliche Bereitstellung, um diesen Inhalt von Ihrem Quellzweig (Master) in den Zielzweig (Staging oder Prod) zu übertragen.

    1. Klicken Sie im cd-pipeline-Dashboard auf Pipeline ausführen.
    2. Wählen Sie Manueller Promotion-Auslöser aus.
    3. Klicken Sie auf Run. Die Pipelineausführung erstellt eine Zusammenführungsanforderung, um Ihre Codeänderungen von der Quellenverzweigung auf die Zielverzweigung umzustufen.

    Manueller Werbeauslöser
    Manueller Werbeauslöser

  2. Genehmigen Sie die Pull-Anforderung und führen Sie sie zusammen.

    1. Klicken Sie auf die Pipelineausführung und überprüfen Sie das Ausführungsprotokoll der Promotion-Pipeline.

    MR-Ausführungsprotokoll
    MR-Ausführungsprotokoll

    1. Suchen Sie die URL der Zusammenführungsanforderung und öffnen Sie die Zusammenführungsanforderung.
    2. Füllen Sie die erforderlichen Felder aus (Priorität, Verantwortlicher für Änderungsanforderung, Zusätzliche Beschreibung und andere Felder).
    3. Führen Sie den Merge-Request (MR) zusammen, um Ihre Änderungen vom Quellzweig in den Zielzweig zu übernehmen.

Nachdem Ihre Änderungen nun in den Zielzweig übertragen wurden, können Sie sie mithilfe der Continuous-Deployment-Pipeline bereitstellen.

Verwendung der Validierungspipeline für Beförderungen

Sobald eine Aktions-PR geöffnet ist, können Sie optional die Evidenz-Aggregation und die Generierung von Zusammenfassungen in der Aktionsvalidierungs-Pipeline durchführen und die Evidenz-Status in der Aktions-Pull/Merge-Anfrage (PR) setzen. Der PR kann von der Promotionspipeline oder manuell im Bestandsverzeichnis erstellt werden. Erfahren Sie mehr über die Validierungspipeline für Beförderungen.

Änderungen aus der Quellenumgebung in der Zielumgebung bereitstellen

Die Quell- und Zielumgebungen werden auf der Ebene der Continuous-Deployment-Pipeline definiert.

Eigenschaften der kontinuierlichen Bereitstellungspipeline
Eigenschaften der kontinuierlichen Bereitstellungspipeline

Je nach den Triggereinstellungen Ihrer Continuous-Deployment-Pipeline wird die Pipeline entweder automatisch ausgelöst, nachdem ein Merge-Request zusammengeführt wurde, oder die Pipeline wird manuell zusammengeführt. Wenn Sie die Pipeline manuell zusammenführen möchten, klicken Sie auf Pipeline ausführen und wählen Sie den auszuführenden Auslöser aus.

Die Pipeline startet und kennzeichnet die aktuelle Festschreibung im Bestandsrepository mit der Ausführungs-ID der Pipeline. Die Pipeline verwendet diesen Tag, um den Inhalt aus der Zielverzweigung (prod) zu übernehmen, und berechnet das Bereitstellungsdelta zwischen der aktuellen Festschreibung und dem Inhalt der letzten erfolgreichen Bereitstellung. Das Delta wird durch das Tag <target-environment>_latest markiert, wobei der Wert ist target-environment, der in den Eigenschaften Ihrer Continuous-Deployment-Pipeline festgelegt ist, beispielsweise prod_latest.

Die Pipeline versucht, den Inhalt zu bereitzustellen. Während der Bereitstellung wird die ID der Änderungsanforderung an die Festschreibung angehängt, mit der die Pipeline als Tag arbeitet. Wenn die Bereitstellungsphase oder -aufgabe erfolgreich abgeschlossen ist, endet die Pipeline damit, dass das Tag <target-environment>_latest an den von Ihnen bereitgestellten Commit angehängt wird.

Git Repos and Issue Tracking Repo-Tags
Git Repos and Issue Tracking Repo-Tags

Weitere Informationen zum Bestandsworkflow finden Sie unter Informationen zu DevSecOps-Pipelines.

Aktualisierung des Speicherorts des Images im Inventar

Nachdem ein Image in die Ziel-Container-Registry hochgeladen wurde, aktualisieren Sie den Speicherort des Images im Inventar, damit dort auf das hochgeladene Image verwiesen wird.

Verwenden Sie den Befehl cocoa inventory update-locations, um den Speicherort des Artefakts im Inventar-Repository zu aktualisieren.

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

Zum Beispiel:

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"

Der Parameter --location gibt den Speicherort des Ziel-Images und dessen SHA-256-Digest an. Der Speicherort hat das folgende Format:

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

Zum Beispiel:

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

Bildwerbung und Beschriftung

Das Image muss in das Ziel-Registry kopiert werden und über eine gültige Signatur für die Ziel-Image-Referenz verfügen, bevor das Inventar aktualisiert wird.

Nachdem das Image bereitgestellt und signiert wurde, rufen Sie den Digest des Images in der Ziel-Registry ab und verwenden Sie diesen Digest mit cocoa inventory update-locations. {: important} Führen Sie den Befehl aus, nachdem cocoa inventory update-locations das Image bereitgestellt und signiert wurde. Das Inventar muss auf das Image in der Ziel-Registry und den entsprechenden Image-Digest verweisen.

Workflow für Werbeaktionen

Der Release-Workflow sieht wie folgt aus:

  1. Übertragen Sie das Image von der Quell-Registry in die Ziel-Registry.
  2. Rufen Sie den Digest des beworbenen Images in der Ziel-Registry ab.
  3. Führen Sie den Befehl mit cocoa inventory update-locations dem Speicherort des Ziel-Images und dem Digest aus.

Der Befehl cocoa inventory update-locations aktualisiert die Metadaten des Bestands. Das Container-Image wird weder kopiert noch signiert.