Pipeline für kontinuierliche Bereitstellung
Die Continuous-Deployment-Pipeline generiert alle Nachweise und Zusammenfassungen der Änderungsanforderungen. Die Pipeline stellt die Build-Artefakte in einer Umgebung (z. B. Staging oder Produktion) bereit und sammelt, erstellt und lädt dann alle vorhandenen Protokolldateien, Beweise und Artefakte in den Evidence Locker hoch.
Stages und Tasks
In der folgenden Tabelle sind die Aufgaben aufgeführt, die in einer CD-Pipeline ausgeführt werden. Darüber hinaus enthält die Tabelle auch einen Überblick über jede dieser Phasen:
-
Task oder Phase: Dies bezieht sich auf den Namen der Phase, der in der Konfigurationsdatei
.pipeline-config.yamldefiniert ist. -
Kurzbeschreibung: Enthält eine kurze Erläuterung der Aktionen, die während der Ausführung der Phase ausgeführt werden.
-
Anpassung zulässig: Gibt an, ob Benutzer die Flexibilität haben, das Standardverhalten der Stage durch Einfügen eines benutzerdefinierten Scripts in die Datei
.pipeline-config.yamlzu ändern oder zu ersetzen. -
Standardreferenzimplementierung: Dies gibt an, ob die DevSecOps Pipelines mit einer vordefinierten oder Standardimplementierung für die Phase geliefert werden. Insbesondere für bestimmte Phasen wie
unit-testsodersetupbietet die DevSecOps Pipeline keine sofort einsatzbereite Implementierung. Stattdessen müssen Benutzer angepasste Scripts oder Code bereitstellen, die auf die Anforderungen ihrer Anwendung zugeschnitten sind. -
Angabensammlung: Gibt an, ob die Phase die Erfassung von Standardangaben durchführt. Wenn DevSecOps Pipeline eine Referenzimplementierung für eine Phase bereitstellt, erfolgt die Beweissammlung sofort. Wenn Benutzer diese vordefinierten Phasen jedoch ändern oder ersetzen möchten, müssen sie sicherstellen, dass ihre angepassten Implementierungen die entsprechende Angabensammlung enthalten. Dieselbe Verantwortung tragen die Benutzer in den Phasen, in denen die DevSecOps Pipeline keine sofort einsatzbereite Implementierung bereitstellt und sie daher selbst Beweise sammeln müssen. Die Spalte gibt die Entität (Benutzer/Pipeline) an, die für die Angabensammlung verantwortlich ist.
-
Überspringen zulässig (gültig für Version > = v10): Gibt an, ob Benutzer die Ausführung dieser Phase ausschließen können, indem sie die Eigenschaft zum Überspringen in der
.pipeline-config.yamlauf 'true' setzen. Bei der Verwendung dieser Funktion ist jedoch Vorsicht geboten, insbesondere bei der Erfassung von Angaben in Stadien. Das Überspringen solcher Phasen kann zu fehlenden wichtigen Angaben für den Build führen.
| Task oder Stage | Kurzbeschreibung | Anpassung zulässig in .pipeline-config.yaml |
Standardreferenzimplementierung | Nachweiserfassung | Überspringen zulässig |
|---|---|---|---|---|---|
start |
Richten Sie die Pipeline-Umgebung ein. | Nein | Ja | Nicht zutreffend | Nein |
setup |
Richten Sie Ihre Build- und Testumgebung ein. | Ja | Nein | Nicht zutreffend | Nein |
verify-peer-review |
Stellen Sie sicher, dass die für die aktuelle Implementierung vorgesehenen Pull-Anforderungen genehmigt wurden. In dieser Stufe wird eine Liste der Pull-Anforderungen generiert, die mit der laufenden Implementierung verknüpft sind. Wenn Pull-Anforderungen nicht genehmigt werden, wird die Implementierung angehalten. | Ja | Ja | Pipeline | Ja |
verify-artifact |
Überprüfen Sie die korrekte Signatur des für die Implementierung geplanten Image. Wenn das Image nicht ordnungsgemäß signiert ist, wird die Bereitstellung blockiert und der entsprechende Angabensammlung eingeleitet. | Ja | Ja | Pipeline | Ja |
change-request |
Generieren Sie die Änderungsanfrage und erstellen Sie die Nachweiszusammenfassung. | Nein | Ja | Pipeline | Nein |
deployment |
Stellen Sie die Buildartefakte in der Umgebung bereit, wie z. B. Staging oder Produktion. | Ja | Nein | Nicht zutreffend | Nein |
acceptance-test |
Führen Sie Akzeptanz- und Integrationstests für die Implementierung aus. | Ja | Nein | User | Ja |
finish |
Sammeln Sie Protokolldateien, Artefakte und Nachweise und laden Sie diese in das Nachweisschließfach hoch. | Ja | Ja | Pipeline | Ja |
rollback |
Dies ist ein Schritt innerhalb von prod-finish, der ausgeführt wird, wenn ein Rollback-Szenario auftritt. |
Ja | Ja | Nicht zutreffend | Nein |
Weitere Informationen über die Anpassung von Phasen mithilfe der Datei .pipeline-config.yaml finden Sie unter Benutzerdefinierte Skripte und
Pipeline-Parameterlisten.
Bereitstellungsdelta
Sobald die Inventarisierungsaktion abgeschlossen ist, kann die kontinuierliche Bereitstellungspipeline beginnen. Das Bereitstellungsdelta ergibt sich aus dem Unterschied zwischen dem Inhalt der zuletzt abgeschlossenen Bereitstellung und der aktuellen Bereitstellung. Im Bereitstellungsdelta werden die Bestandselemente aufgelistet, die bereitgestellt werden.
Für den Zugriff auf das Implementierungsdelta in Ihren Implementierungsscripts können Sie die folgenden Befehle verwenden:
# return a JSON file path with an array of inventory entries that were changed
get_env DEPLOYMENT_DELTA_PATH
# return a JSON file path with an array of inventory entries that were deleted
get_env DEPLOYMENT_DELTA_DELETIONS_PATH
# returns a JSON file path with an array of all inventory entries
get_env INVENTORY_ENTRIES_PATH
Stückliste für Bereitstellung berechnen
Die Stückliste für die Bereitstellung stellt alle Artefakte dar, die im Rahmen einer einzelnen Änderungsanfrage bereitgestellt werden. Nachdem das Bereitstellungsdelta berechnet worden ist, erstellt die Pipeline auf der Grundlage dieser Elemente die Stückliste für die Bereitstellung.
Nachweiszusammenfassung erfassen
Aus allen Nachweisen, die während des relevanten Builds erstellt wurden, der zu einer Bereitstellung geführt hat, wird eine Nachweiszusammenfassung erstellt. Zu der Zusammenfassung werden auch solche Nachweise hinzugefügt, die während der eigentlichen Bereitstellung erstellt werden. Die Nachweiszusammenfassung wird zu der Beschreibung der Änderungsanfrage hinzugefügt. Standardmäßig umfasst die Angabenzusammenfassung Angaben zur Erstellungszeit, die in der CI-Pipeline erfasst wurden, sowie Angaben, die während der aktuellen Ausführung der CD-Pipeline erfasst wurden.
Die folgenden Anweisungen gelten ausschließlich für CD-Pipelines für Produktionsumgebungen. Verwenden Sie das Flag "target-environment-purpose", um festzulegen, ob die Umgebung als pre_prod oder als production bezeichnet wird.
Voraussetzung: Setzen Sie in der CD-Pipeline für die pre_prod-Umgebung das Flag "pre-prod-evidence-collection" auf 1. Dies ermöglicht die Erfassung und Speicherung von Buildzeitangaben im Angabenschließfach für alle Assets, die von der CD-Pipeline implementiert werden, und die Implementierung in der Vorproduktionsumgebung. Für Umgebungen, die als 'pre_prod' gekennzeichnet sind, ist das Flag 'pre-prod-evidence-collection' standardmäßig auf 1 gesetzt.
Setzen Sie in der CD-Pipeline für die Produktionsumgebung das Flag vor prod-evidence-collection auf 1. Dies ermöglicht es der CD-Pipeline, die auf die Produktionsumgebung abzielt, die während der Bereitstellung in der
Vorproduktionsumgebung erfassten Angaben abzurufen. Für Umgebungen, die als Produktionsumgebung bestimmt sind, ist das Flag pre-prod-evidence-collection standardmäßig auf 0 gesetzt.
Sobald das Flag pre-prod-evidence-collection auf 1 gesetzt ist, enthalten Änderungsanforderungen, die von der CD-Pipeline generiert werden, die für die Produktionsumgebung bestimmt ist, Referenzen auf die Änderungsanforderungs-IDs
aus Vorproduktionsumgebungen im Feld Validierungsdatensatz.
Weitere Informationen finden Sie unter Angabenübersicht.
Änderungsanfrage vorbereiten und erstellen
Alles, was eine Änderung der Baseline bewirkt, muss anhand einer Änderungsanfrage verfolgt werden. Zu solchen Änderungen gehören Aktualisierungen der vorhandenen Codeversion, Änderungen an der Konfiguration und Aktualisierungen der Worker-Knoten. Die Erfassung von Compliance-Daten bei Prüfung durch Peers basiert auf den Daten, auf die im Bestand, im Nachweisschließfach und im Repository für Probleme vom Typ 'Vorfall' (Incident) zugegriffen werden kann.
Verwenden Sie get_env CHANGE_REQUEST_ID, um den Wert der Änderungsanforderungs-ID in den nachfolgenden Phasen zu nutzen.
Ändern Sie nicht den Wert der Variablen, die set_env verwendet, da dies nur für die interne Implementierung vorgesehen ist.
Mit diesem Schritt wird die Änderungsanfrage erstellt, indem die verfügbaren Compliance-Daten auf der Basis der Felder der Pull-Anforderung für die Umstufung angehängt werden. Die Bereitstellungsbereitschaft wird auf der Grundlage der verfügbaren Nachweise im erfassten Status der Compliance berechnet.
Wenn die Pre-Prod-Evidenzen in der Produktionsbereitstellung erfasst werden, werden Pre-Prod-Änderungsanträge mit dem Produktionsänderungsantrag verknüpft. Weitere Informationen finden Sie unter In Änderungsanforderungen enthaltene Daten.
Mehrere Änderungsanforderungen können mithilfe eines speziellen Change-Request-Listeners für verschiedene Bereitstellungskonfigurationen vorab erstellt werden, darunter Bereitstellungen in mehreren Regionen, Zielen und Clustern. Diese vorab erstellten Änderungsanforderungen können nach ihrer Genehmigung just-in-time an die Bereitstellungspipeline weitergeleitet werden, die vorab berechnete Informationen nutzt, um die eigentliche Bereitstellung zu beschleunigen.
Genehmigung der Änderungsanfrage prüfen
Wenn alle Konformitätsprüfungen erfolgreich verlaufen, z. B. Unit-Tests, Code Risk Analyzer-Tasks, Branch Protection und Detect Secrets, wird die Änderungsanforderung automatisch genehmigt und die Aufgabe erfolgreich ausgeführt. Weitere Informationen finden Sie unter Änderungsmanagement automatisieren.
Wenn eine Prüfung auf Compliance fehlschlägt, erhält die Änderungsanfrage nicht den Status 'Genehmigt'. Sie können die Änderungsanforderung manuell genehmigen und die change-request-id zu den Umgebungseigenschaften hinzufügen, um die zuvor erstellte Änderungsanforderung beim nächsten Lauf zu verwenden. Sie können die Änderungsanfrage auch manuell genehmigen und eine Notfallkennzeichnung hinzufügen.
Deployment
In der Bereitstellungsphase stellt die Pipeline die erstellten Artefakte in einer Umgebung wie Staging oder Prod bereit. Die Variablen und Berechtigungsnachweise für diese Stages werden in den folgenden Quellen genannt:
- Variablen aus der Pipeline-Benutzerschnittstelle (
get_env)
Weitere Informationen dazu, wie auf diese Variablen zugegriffen werden kann, finden Sie unter Angepasste Scripts.
Akzeptanztest
Sie können eine Gruppe automatisierter Tests ausführen, um zu überprüfen, ob die Bereitstellung erfolgreich war und erwartungsgemäß funktioniert. Stellen Sie zum Zweck der Rückverfolgbarkeit sicher, dass das Testprotokoll einen Verweis auf die Codeversion oder auf das Image enthält, die bzw. das getestet wird.
Änderungsanfrage abschließen
Die Details für die Bereitstellung werden in die Änderungstask für die Abschlusszusammenfassung hochgeladen und anschließend schließt die Task die Änderungsanfrage. Zu der Task zum Schließen der Änderungsanfrage wird close_category mit einem der folgenden Werte hinzugefügt:
- Erfolgreich (wenn der Einsatz bereit war und der CD-Einsatz erfolgreich war)
- Erfolgreich mit Problemen (wenn die Zusammenfassung Probleme enthält, war die Implementierung nicht bereit und die CD-Implementierung erfolgte im Notfall)
Abschluss der Bestandserfassung
Weitere Informationen zum Abschluss der Bestandserfassung finden Sie im Abschnitt Bestand.
Eine Anwendung neu bereitstellen
Übersicht
Wenn eine Anwendung nach Änderungen an der Infrastruktur abstürzt oder sich unerwartet verhält, können Sie eine erneute Bereitstellung erzwingen, um das Problem zu beheben.
Verwenden Sie force-redeploy=true diese Option, wenn Sie einen manuellen CD-Pipeline-Lauf auslösen, um das standardmäßige Verhalten der Änderungserkennung zu überschreiben. Diese Einstellung weist die Pipeline
an, das gesamte Inventar neu bereitzustellen, auch wenn keine neuen Änderungen erkannt werden.
Standardverhalten (ohne erzwungene Neubereitstellung)
Wenn nicht festgelegt force-redeploy oder auf false gesetzt ist, wird die Pipeline nur bereitgestellt, wenn neue Änderungen im Inventar-Repository für die Zielumgebung erkannt werden.
-
Die CD-Pipeline startet und versieht die aktuelle Übergabe mit der Lauf-ID der Pipeline.
-
Die Pipeline liest den Inhalt des entsprechenden Umgebungszweigs aus diesem Tag.
-
Die Pipeline berechnet das Bereitstellungsdelta zwischen dem aktuellen Commit und dem mit dem Tag
<target-environment>_latestverbundenen Commit. -
Die Pipeline bewertet das Delta:
- Wenn das Delta leer ist, wird die Pipeline angehalten und es erfolgt keine Bereitstellung.
- Wenn das Delta Änderungen enthält, wird die Pipeline fortgesetzt.
-
Die Pipeline stellt die im Delta identifizierten Änderungen bereit.
-
Nach einer erfolgreichen Bereitstellung fügt die Pipeline das
<target-environment>_latestTag zum neuen Commit hinzu.
Erzwungenes Verhalten (mit erzwungener Neuzuweisung)
Wenn auf true gesetzt force-redeploy ist, umgeht die Pipeline die Delta-Validierung und stellt das gesamte Inventar neu bereit, unabhängig von den erkannten Änderungen. Dieser Ansatz stellt sicher, dass der vollständige
Anwendungsstatus erneut auf das Bereitstellungsziel angewendet wird.
- Die CD-Pipeline startet und versieht die aktuelle Übergabe mit der Lauf-ID der Pipeline.
- Die Pipeline liest den Inhalt des entsprechenden Umgebungszweigs aus diesem Tag.
- Die Pipeline berechnet das Bereitstellungsdelta, das in diesem Szenario in der Regel leer ist.
- Die
force-redeploy=trueEinstellung bewirkt, dass die Pipeline die Delta-Prüfung überspringt und fortfährt. - Die Pipeline stellt den gesamten Anwendungsstatus aus dem Branch neu bereit.
- Nach einer erfolgreichen Neubereitstellung fügt die Pipeline das
<target-environment>_latestTag an den gerade bereitgestellten Commit an.
Vorgehensweise
-
Starten Sie einen neuen manuellen CD-Pipeline-Lauf.
-
Setzen Sie in der Konfiguration der Pipeline die
force-redeployUmgebungsvariable auftrue. -
Führen Sie die Pipeline aus.
Rollback einer Bereitstellung
Übersicht
Ein Rollback macht eine vorherige Bereitstellung rückgängig und stellt einen bekannten Anwendungszustand wieder her, wenn eine Bereitstellung zu Instabilität, Ausfällen oder Compliance-Problemen führt. Rollbacks werden in der Regel durchgeführt, um die Zuverlässigkeit des Dienstes wiederherzustellen, die Konsistenz der Konfiguration sicherzustellen oder die Einhaltung gesetzlicher Vorschriften zu gewährleisten.
Es stehen drei Rollback-Ansätze zur Verfügung, die jeweils für unterschiedliche Wiederherstellungsszenarien geeignet sind:
- Vollständiges Rollback: Stellt die letzte bekannte funktionierende Konfiguration wieder her, indem eine ServiceNow Änderungsanforderungs-ID herangezogen wird. Empfohlen für kontrollierte und überprüfbare Wiederherstellung.
- Vollständiges Rollback mit GitOps: Stellt einen früheren Zustand wieder her, indem Commits im Inventar-Repository manuell rückgängig gemacht werden. Aufgrund eingeschränkter Compliance-Handhabung nicht empfohlen.
- Inline-Rollback: Setzt eine fehlgeschlagene Bereitstellung innerhalb desselben Pipeline-Laufs zurück, wenn Ausführungsfehler auftreten.
Vollständiges Zurücksetzen
Übersicht über die Rollback-Pipeline
Mit dieser Pipeline können Sie zu einer früheren, bekanntermaßen funktionierenden Konfiguration zurückkehren, indem Sie eine bestimmte ServiceNow Änderungsanforderungs-ID (z. B. CHG-12345) auswählen.
Diese Änderungsanforderungs-ID dient als eindeutiges Lesezeichen für eine erfolgreiche Bereitstellung und ist eine erforderliche Eingabe für die Rollback-Pipeline.
Sie können die Änderungsanforderungs-ID für eine frühere Bereitstellung auf zwei Arten finden:
- ServiceNow: Suchen Sie die Änderungsanforderung für den Einsatz, den Sie wiederherstellen möchten.
- Inventar-Repository: Da der Status des Inventars in der Quellcodeverwaltung verwaltet wird, wird jede Bereitstellung durch einen Commit eindeutig identifiziert. Suchen Sie den Commit, den Sie rückgängig machen möchten,
und identifizieren Sie den
CHG-***Tag, der mit diesem Commit verbunden ist.
Die Rollback-Pipeline umfasst die folgenden Phasen:
prod-rollback-startprod-setupprod-rollback-change-requestprod-deploymentprod-acceptance-testsprod-rollback-finish
Der Pipeline-Lauf verwendet Informationen aus der rollback-change-request-id Umgebungseigenschaft, um eine neue Änderungsanforderung zu erstellen.
Um die Compliance aufrechtzuerhalten, öffnet die Pipeline erneut Probleme, die mit der vorherigen Bereitstellung zusammenhängen. Diese Probleme sind mit der neuen Änderungsanforderung verknüpft, und ihre ursprünglichen Fälligkeitstermine
bleiben unverändert. Ein erfolgreiches Rollback verschiebt das _latest Tag im Inventar zum vorherigen Commit.
Rollback-Pipeline erstellen
Verwenden Sie die cd-rollback-listener Option, um ein Rollback auf die letzte bekannte funktionierende Version auszulösen.
- Gehen Sie zu Ihrer CD-Pipeline.
- Fügen Sie einen manuellen Auslöser hinzu oder duplizieren Sie den manuellen CD-Auslöser.
- Bearbeiten Sie den Trigger und setzen Sie den Listener auf
cd-rollback-listener. - Wählen Sie Speichern aus.
- Erstellen Sie für jede erforderliche Kombination aus Region und Zielumgebung einen separaten Trigger.
Rollback-Pipeline auslösen
Ein Rollback-Pipeline-Lauf verwendet die folgenden Umgebungseigenschaften:
| Umgebungseigenschaft | Beschreibung |
|---|---|
rollback-change-request-id |
(Erforderlich) Die Änderungsanforderungs-ID der abgeschlossenen Bereitstellung, die Sie zurücksetzen möchten. |
rollback-limit |
Die maximale Anzahl von Bereitstellungen, die Sie zurücksetzen können. Der Standardwert ist 1 (die letzte abgeschlossene Bereitstellung). |
region |
Der Bereich für die Rücknahme. |
target-environment |
Die Zielumgebung für das Rollback (z. B. Stage oder Prod). |
Die Pipeline wird beendet, sofern nicht die folgenden Kriterien erfüllt sind:
rollback-change-request-idmuss die ID einer abgeschlossenen Bereitstellung für dieselbe Region und Zielumgebung sein.- Die mit verbundene Bereitstellung
rollback-change-request-iddarf nicht älter sein als die durch rollback-limit angegebene Anzahl von Bereitstellungen.
Die PIPELINE_NAME Tekton-Umgebungseigenschaft bestimmt, ob ein Lauf eine Bereitstellung oder ein Rollback ist.
cd-rollback-pipeline: Standardwert für ein Rollback.cd-pipeline: Standardwert für eine Bereitstellung.
Mit dieser Eigenschaft können Sie die Verzweigungslogik anpassen.
Vollständiges Rollback mit GitOps
Übersicht über Rollback mit GitOps
Verwenden Sie die Pipeline für kontinuierliche Bereitstellung, um eine frühere Version des Inventars in der Zielumgebung bereitzustellen, indem Sie Git Vorgänge verwenden, die Änderungen zu einem bestimmten commit-id Zeitpunkt
rückgängig machen.
Da Sie Commits im Inventar-Repository direkt rückgängig machen, anstatt die Rollback-Pipeline mit einer ServiceNow Änderungsanforderungs-ID auszulösen, werden durch diesen Vorgang frühere Compliance-Probleme nicht automatisch wieder geöffnet und deren Fälligkeitstermine nicht verwaltet.
Wenn ausgelöst, führt die CD-Pipeline die folgenden Schritte für die erneute Bereitstellung durch:
- Die Pipeline startet und versieht den aktuellen Commit (den Revert-Commit) mit der Lauf-ID der Pipeline.
- Die Pipeline liest den Inhalt des entsprechenden Umgebungszweigs aus diesem Tag.
- Die Pipeline berechnet das Bereitstellungsdelta zwischen dem aktuellen Commit und dem mit dem Tag
<target-environment>_latestverbundenen Commit. - Nach einer erfolgreichen Bereitstellung wird das
<target-environment>_latestTag in den neuen (zurückgesetzten) Commit verschoben.
Erstellen Sie einen Rollback-Promotion-Pull-Request
- Identifizieren Sie die
commit-idder Bereitstellungsversion im Inventar, zu der Sie zurückkehren möchten. - Setzen Sie den Zustand des Repositorys auf diesen Commit zurück.
- Erstellen Sie einen Pull-Request, um den zurückgesetzten Zustand zu übernehmen.
Das folgende Beispiel veranschaulicht dieses Szenario anhand von git Befehlen.
-
Commits und Tags auflisten, um die Commit-ID des letzten bekannten guten Zustands zu finden (z. B.
refs/tags/8)# /c/usr/devsecops/compliance-inventory (master) $ git show-ref --tags ... 83f7a87ee59185eaeac554bd3abeebfd2c1b4ad8 refs/tags/8 ... 1914a125e76aa97c497f4bd2c2f455b58cf079b8 refs/tags/prod_latest -
Liste aller Commits zwischen dem aktuellen Zustand (
refs/tags/prod_latest) und dem Zielzustand (refs/tags/8).# /c/usr/devsecops/compliance-inventory (master) $ git rev-list --no-merges HEAD...83f7a87ee59185eaeac554bd3abeebfd2c1b4ad8 67cc8babdff3e09c1f0e632f897798c1b5424f38 6fab5ce3d60590cd858206424ecfd7d3a8c9ceb4 ... -
Den Inventarstatus auf den Ziel-Commit (
refs/tags/8) zurücksetzen.# /c/usr/devsecops/compliance-inventory (master) $ git revert -n $(git rev-list --no-merges HEAD...83f7a87ee59185eaeac554bd3abeebfd2c1b4ad8) -
Den neuen Status festschreiben.
# /c/usr/devsecops/compliance-inventory (master|REVERTING) $ git commit -m "revert master to 83f7a87ee59185eaeac554bd3abeebfd2c1b4ad8" [master af82538] revert master to 83f7a87ee59185eaeac554bd3abeebfd2c1b4ad8 -
Übertragen Sie das Update in den Master-Zweig.
# /c/usr/devsecops/compliance-inventory (master) $ git push --set-upstream origin master ... To [https://us-south.git.cloud.ibm.com/jaunin.b/compliance-inventory.git](https://us-south.git.cloud.ibm.com/jaunin.b/compliance-inventory.git) 67cc8ba..af82538 master -> master ...
Lösen Sie die Pipeline für kontinuierliche Bereitstellung aus
-
Erstellen Sie einen Pull-Request für die Rollback-Änderungen.
-
Überprüfen Sie den Pull Request und führen Sie ihn zusammen.
-
Lösen Sie den manuellen CD-Pipeline-Lauf in Ihrer CD-Toolchain aus.
Inline-Rollback
Übersicht über Inline-Rollback
Dieser Modus rollt die aktuelle Bereitstellung im Rahmen desselben Pipeline-Laufs zurück. Dies ist erforderlich, wenn während der Bereitstellungs- oder Abnahmetestphase ein Fehler oder Ausfall auftritt, wodurch der Bereitstellungsversuch als fehlgeschlagen markiert wird.
Ein Inline-Rollback wird automatisch ausgeführt, wenn die rollback-enabled Umgebungseigenschaft auf 1 gesetzt ist und in der Bereitstellungs- oder Abnahmetestphase ein Fehler auftritt.
Wenn ein Rollback ausgelöst wird, führt die CD-Pipeline das Segment aus, das in Ihrer .pipeline-config.yaml``rollback Datei für definiert ist. Wenn ein rollback Segment in der Datei nicht definiert ist, wird eine
Standardimplementierung ausgeführt und Sie werden aufgefordert, ein Rollback-Skript anzugeben.
Beispiel für ein Rollback-Skript in .pipeline-config.yaml:
rollback:
image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.74
script: |
#!/usr/bin/env bash
if [[ "$PIPELINE_DEBUG" == 1 ]]; then
trap env EXIT
env
set -x
fi
source $WORKSPACE/$PIPELINE_CONFIG_REPO_PATH/scripts/deploy_setup.sh
source $WORKSPACE/$PIPELINE_CONFIG_REPO_PATH/scripts/rollback.sh
Während des Inline-Rollbacks festgelegte Eigenschaften
rollback-status: Zeigt den Status des Rollback-Schritts an. Gültige Werte:[notRun, success, failure]rollback-exit-codeDer Exit-Code des Rollback-Schritts. Dieser Wert ist leer, wenn das Rollback nicht ausgeführt wurde.default-rollback-executed: Setzen Sie auf,truewenn die Standardimplementierung (die zur Eingabe eines Skripts auffordert) ausgeführt wurde. Dieser Wert ist standardmäßig leer.pipeline-execution-status: Zeigt den Status des gesamten Pipeline-Durchlaufs an. Gültige Werte:[successful_deployment, failed_deployment_failed_rollback, failed_deployment_successful_rollback]
Rückverfolgbarkeit der Bereitstellung ermöglichen
Wenn ein PR- oder Merge-Antrag zusammengeführt wird, erhöht das System die Transparenz und Nachvollziehbarkeit, indem es einen klaren Überblick über die nächsten Schritte bietet. Es aktualisiert die PR automatisch mit dem Bereitstellungsstatus,
sodass die Beteiligten den Fortschritt einer Fehlerbehebung oder Funktion leicht verfolgen können, ohne auf Pipeline-Details zugreifen zu müssen. Dieser optimierte Ansatz verbessert nicht nur die Transparenz, sondern erleichtert auch die Rückverfolgbarkeit
und reduziert den Aufwand, der für die Erfassung und Überprüfung von Informationen erforderlich ist. Nach einer erfolgreichen Bereitstellung wird ein Label im Format deploy:{region}:{env} auf die in der Bereitstellung enthaltenen
Pull-Anfragen angewendet.
Eine Opt-in-Flagge deployment-traceability ist verfügbar, um diese Funktion in der CD-Pipeline zu aktivieren. Benutzer können die Rückverfolgbarkeit von Bereitstellungen aktivieren, indem sie bei Bedarf die Flagge auf 1 setzen.
Um diese Funktionalität weiter zu unterstützen, kann der Benutzer, wenn er ein bestimmtes Token zum Hinzufügen von Labels zu PRs im App-Repository bereitstellen möchte, die folgenden Umgebungsvariablen verwenden, um Git anzugeben. Die Reihenfolge, in der Git nachgeschlagen wird, ist wie folgt:
- Eine vorhandene Umgebungsvariable für ein Repository-spezifisches Token:
git-token-$repo_name-$repo_org. - Eine neue Umgebungsvariable für ein organisationsspezifisches Token:
git-token-$repo_org.