In diesem Dokument werden Automatisierungsregeln beschrieben. Das sind Aktionen, die automatisch in Ihrer Bereitstellungspipeline ausgeführt werden können. Sie können Ihre Lieferpipeline beispielsweise so konfigurieren, dass die Hochstufung in ein bestimmtes Ziel unter den richtigen Umständen automatisch erfolgt.
Sie können nur Automatisierungsregeln verwenden, die in Cloud Deploy integriert sind. Die verfügbaren Automatisierungsregeln sind in diesem Dokument aufgeführt.
Verfügbare Automatisierungsregeln
Die folgenden Automatisierungsregeln sind in Cloud Deploy verfügbar:
| Regel | Beschreibung |
|---|---|
timedPromoteReleaseRule
|
Automatisch vom einen zum nächsten Ziel hochstufen
basierend auf einem Cronjob-Zeitplan. |
promoteReleaseRule
|
Stuft einen Release nach erfolgreichem
Roll-out im vorherigen Ziel in der Abfolge. |
advanceRolloutRule
|
Roll-out automatisch von der angegebenen
Phase zur nächsten Phase. |
repairRolloutRule
|
Fehlgeschlagene Jobs im Roll-out automatisch wiederholen
angegebene Anzahl von Malen wiederholt und zurückgesetzt, wenn alle Wiederholungen fehlschlagen. |
Automatisierungsregeln konfigurieren
Die Konfiguration für jede Automatisierungsregel hängt von der jeweiligen Regel ab. In diesem Abschnitt wird die Konfiguration beschrieben, die allen Regeln gemeinsam ist, sowie die Konfiguration der einzelnen verfügbaren Regeln.
Jede Automatisierungsregel wird als Teil der Konfiguration für die Automatisierungsressource konfiguriert. Dies kann in derselben Datei wie die Konfiguration für die entsprechende Bereitstellungspipeline (in der Regel clouddeploy.yaml) oder in einer beliebigen anderen Datei erfolgen. Weitere Informationen zum Konfigurieren von automatisierten Abläufen
In den folgenden Abschnitten wird die Konfiguration für einzelne Automatisierungsregeln beschrieben. Informationen zur Konfiguration der Automatisierung finden Sie unter Bereitstellung automatisieren.
timedPromoteReleaseRule-Automatisierungsregel konfigurieren
Mit der Regel timedPromoteReleaseRule können Sie planen, wann ein Release vom ausgewählten Ziel oder den ausgewählten Zielen zum nächsten Ziel in der Abfolge oder zu einem angegebenen Ziel hochgestuft werden soll. Wenn Sie eine timedPromoteReleaseRule-Automatisierung konfigurieren, geben Sie anhand eines Cron-Zeitplans an, wann die Release-Version hochgestuft werden soll.
rules:
- timedPromoteReleaseRule:
id: "[RULE_ID]"
schedule: "[CRON]"
timeZone: "[TIME_ZONE]"
destinationTargetId: "[TO_TARGET]"
destinationPhase: "[TO_PHASE]"
Wobei:
[RULE_ID]ist ein beliebiger Name, den Sie dieser Regel geben möchten. Dieser Name darf innerhalb der Automatisierungsressource nur einmal vorkommen.
[CRON]Ist der Cron-Zeitplan, der angibt, wann der Release hochgestuft werden soll. Mit diesem Zeitplan können Sie das Datum und die Uhrzeit angeben, zu der Sie die Veröffentlichung bewerben möchten.
Dieser Zeitplan verwendet die Standard-
cron-Syntax:* * * * *In diesem Zeitplan…
- Die erste Position ist die Minute (
0–59). - Die zweite Position ist die Stunde (
0–23). - Die dritte Position ist der Tag des Monats (
1–31). - Die vierte Position ist der Monat (
1–12). - Die fünfte Position ist der Wochentag (
0–6, Sonntag bis Samstag).
Wenn Ihre Regel für die zeitgesteuerte Bewerbung beispielsweise den folgenden Zeitplan enthält:
0 9 * * 1, wird Ihr Release jeden Montag um 9:00 Uhr beworben.Sie können auch Standardfunktionen für Cron-Zeitpläne verwenden, z. B.:
- Ein Bereich (
0–5) - Eine Liste (
1,3,5) - Eine Stufenfunktion (z. B.
*/3im Feld „Stunden“ aktiviert jede dritte Stunde)
- Die erste Position ist die Minute (
[TIME_ZONE]Die Zeitzone, die Sie für die Planung des Angebots verwenden möchten, im IANA-Format.
[TO_TARGET]Ist die
targetIddes Ziels, auf das hochgestuft werden soll, oder@next, um den Release automatisch auf das nächste Ziel hochzustufen, nachdem das in derselector.targets propertydieser Automatisierungskonfiguration angegebene Ziel erreicht wurde. Dies ist optional. Der Standardwert ist@next.[TO_PHASE]Ist der Phasenname der phase, die Sie hochstufen möchten, z. B.
canary-25oderstable. Diese Eigenschaft ist optional. Wenn Sie sie weglassen, wird der Release in die erste Phase des Ziels hochgestuft.
promoteReleaseRule-Automatisierungsregel konfigurieren
Mit der promoteReleaseRule-Regel wird Ihr Release nach einem erfolgreichen Roll-out in ein Ziel hochgestuft. Wenn Sie beispielsweise drei Ziele haben, können Sie diese Regel so einrichten, dass der Release automatisch auf das zweite Ziel hochgestuft wird, wenn er erfolgreich im ersten Ziel bereitgestellt wurde.
Wenn Sie eine promoteReleaseRule-Automatisierung konfigurieren, können Sie entweder ein Ziel für die Promotion (destinationTargetId) oder @next angeben. Wenn das Roll-out im Ziel, das in der Automation-Definition angegeben ist, erfolgreich abgeschlossen ist, wird der Release nach einem wait-Zeitintervall auf das in destinationTargetId angegebene Ziel hochgestuft.
Mit der Property destinationPhase können Sie einen Release auch auf eine bestimmte Phase im gewünschten Ziel hochstufen. Der hier gezeigte rules-Abschnitt gehört in Ihre Automatisierungsdefinition.
rules:
- promoteReleaseRule:
id: "[RULE_ID]"
wait: [WAIT_TIME]
destinationTargetId: "[TO_TARGET]"
destinationPhase: "[TO_PHASE]"
Wobei:
[RULE_ID]ist ein beliebiger Name, den Sie dieser Regel geben möchten. Dieser Name darf innerhalb der Automatisierungsressource nur einmal vorkommen.
[WAIT_TIME]Die Anzahl der Minuten, die gewartet werden soll, nachdem das Release für die Promotion bereit ist, bevor es beworben wird. Beispiel:
1m.mist erforderlich.Der Standardwert ist
0, d. h. keine Wartezeit. Das Maximum beträgt20160m(oder 14 Tage).[TO_TARGET]Ist die
targetIddes Ziels, auf das hochgestuft werden soll.Das kann auch
@nextsein. In diesem Fall wird der Release automatisch zum nächsten Ziel hochgestuft, nachdem das Ziel erreicht wurde, das in der Eigenschaftselector.targetsin dieser Automatisierungskonfiguration angegeben ist. Dies ist der Standardwert, wenn Sie den Wert ausdestinationTargetIdweglassen.[TO_PHASE]Ist der Phasenname der Phase, die Sie hochstufen möchten, z. B.
canary-25oderstable. Diese Property ist optional. Wenn Sie sie weglassen, wird der Release in die erste Phase des Ziels hochgestuft.
advanceRolloutRule-Automatisierungsregel konfigurieren
Mit advanceRolloutRule wird Ihr Roll-out nach erfolgreichem Abschluss einer Phase automatisch in die nächste Phase verschoben. Diese Automatisierungsregel ist für Canary-Bereitstellungen nützlich. Wenn Sie beispielsweise eine Canary-Bereitstellungsstrategie für ein Ziel mit den Phasen 25%, 50% und stable konfiguriert haben, können Sie eine Automatisierungsregel konfigurieren, mit der die Phase nach Abschluss der Phase 50% automatisch auf stable umgestellt wird.
Wenn Sie eine advanceRolloutRule-Automatisierung konfigurieren, geben Sie die Phase an, ab der die Automatisierung ausgeführt werden soll (die sourcePhase). Der hier gezeigte rules-Abschnitt gehört in Ihre Automatisierungsdefinition.
rules:
- advanceRolloutRule:
id: "[RULE_ID]"
sourcePhases: ["[START_PHASE]", "[START_PHASE]"...]
wait: [WAIT_TIME]
Wobei:
[RULE_ID]ist ein beliebiger Name, den Sie dieser Regel geben möchten. Dieser Name darf innerhalb der Automatisierungsressource nur einmal vorkommen.
[WAIT_TIME]Die Anzahl der Minuten, die gewartet werden soll, bevor das Rollout fortgesetzt wird, nachdem es bereit ist. Beispiel:
1m.mist erforderlich.Der Standardwert ist
0, d. h. keine Wartezeit. Das Maximum beträgt20160m(oder 14 Tage).["[START_PHASE]", "[START_PHASE]"...]Die Phase oder Phasen, aus denen das Roll-out automatisch fortgesetzt wird. Wenn eine der aufgeführten Phasen erfolgreich abgeschlossen ist, wird das Roll-out automatisch von dieser Phase in die nächste Phase verschoben.
Bei Phasennamen wird zwischen Groß- und Kleinschreibung unterschieden. Außerdem sind diese Phasennamen optional. Wenn Sie
sourcePhasesweglassen, werden alle Phasen im Roll-out automatisch fortgesetzt.
repairRolloutRule-Automatisierungsregel konfigurieren
Mit der Regel repairRolloutRule wird ein fehlgeschlagener Roll-out eine bestimmte Anzahl von Malen wiederholt. Wenn diese Anzahl von Wiederholungsversuchen erreicht ist, kann mit dieser Regel das Ziel automatisch auf das letzte erfolgreiche Release zurückgesetzt werden.
Wenn Sie eine repairRolloutRule-Automatisierung konfigurieren, können Sie angeben, wie oft die Einführung wiederholt werden soll und wie lange zwischen den Wiederholungen gewartet werden soll. Sie können auch festlegen, dass bestimmte Phasen oder Jobs oder beides wiederholt werden soll. Wenn jeder Wiederholungsversuch fehlschlägt, schlägt auch der Roll-out fehl. Wenn ein Wiederholungsversuch erfolgreich ist, wird die Automatisierung beendet und die Einführung ist erfolgreich.
Optional können Sie die Automatisierung so konfigurieren, dass ein Rollback auf den letzten erfolgreichen Release im Ziel erfolgt. Wiederholungen sind ebenfalls optional, aber Sie müssen entweder eine bestimmte Anzahl von Wiederholungen oder ein Rollback oder beides haben.
Der hier gezeigte rules-Abschnitt gehört in Ihre Automatisierungsdefinition.
rules:
- repairRolloutRule:
id: "[RULE_ID]"
phases: [PHASES_TO_REPAIR]
jobs: [JOBS_TO_REPAIR]
repairPhases:
- retry:
attempts: [NUMBER_OF_ATTEMPTS]
wait: [WAIT_TIME]
backoffMode: [LINEAR | EXPONENTIAL]
- rollback:
destinationPhase: [PHASE_NAME]
disableRollbackIfRolloutPending: [true | false]
Wobei:
[RULE_ID]ist ein beliebiger Name, den Sie dieser Regel geben möchten. Dieser Name darf innerhalb der Automatisierungsressource nur einmal vorkommen.
[PHASES_TO_REPAIR]Die Roll-out-Phase(n), die wiederholt werden sollen. Dies ist optional. Standardmäßig sind alle Phasen des Rollouts ausgewählt.
[JOBS_TO_REPAIR]Gibt an, welcher Job oder welche Jobs wiederholt werden sollen. Das ist optional. Standardmäßig werden alle Jobs berücksichtigt.
[NUMBER_OF_ATTEMPTS]Optional: Die Anzahl der Wiederholungsversuche für den Roll-out, bevor er als fehlgeschlagen betrachtet wird.
[WAIT_TIME]Gibt die Wartezeit zwischen Wiederholungsversuchen an. Beispiel:
1mfür ein Intervall von einer Minute. Die Zeiteinheit (in diesem Fallm) ist erforderlich.Wenn
modegleichlinearist, ist dieses Intervall für jeden Wiederholungsversuch gleich. Wennmodegleichexponentialist, wird das Intervall jedes Mal erhöht. Weitere Informationen finden Sie untermode.backoffModeLINEARoderEXPONENTIAL, um anzugeben, ob die Zeit zwischen Wiederholungsversuchen verlängert werden soll. WennLINEAR, ist die Zeit zwischen den Wiederholungsversuchen konstant und beträgtWAIT_TIME. WennEXPONENTIAL, verdoppelt sich die Zeit zwischen den Wiederholungen mit jeder aufeinanderfolgenden Wiederholung. Standardwert istLINEAR.Wenn
WAIT_TIMEbeispielsweise 1 Minute undbackoffModeaufEXPONENTIALfestgelegt ist, beträgt die Zeit zwischen dem Fehler und dem ersten Wiederholungsversuch 1 Minute, die Zeit zwischen dem ersten und zweiten Wiederholungsversuch 2 Minuten und die Zeit zwischen dem zweiten und dritten Wiederholungsversuch 4 Minuten.rollbackOptional: Gibt an, ob das fehlgeschlagene Rollout zurückgesetzt werden soll, nachdem alle Wiederholungsversuche fehlgeschlagen sind.
[PHASE_NAME]Ist der Name einer bestimmten Phase, zu der Sie ein Rollback durchführen möchten. Wenn Sie
toPhaseweglassen, wird standardmäßig die Phasestablefür das Rollback verwendet.disableRollbackIfRolloutPending:Wenn der Wert auf
truefestgelegt ist, wird der Rollback-Vorgang abgebrochen, wenn für das Ziel ein ausstehender Rollout vorhanden ist.
repairRolloutRule-Automatisierungsausführung abbrechen
Wenn Sie einen der folgenden Befehle für Ihren Roll-out ausführen, wird die repairRolloutRule-Automatisierung abgebrochen:
Beispiel
Das folgende Beispiel zeigt eine Automatisierungskonfiguration mit einer repairRolloutRule:
apiVersion: deploy.cloud.google.com/v1
kind: Automation
metadata:
name: regular-repair/regular
description: repair regular rollouts
suspended: false
serviceAccount: (REDACTED)
selector:
targets:
- id: t1
rules:
- repairRolloutRule:
id: "repair-rollout"
repairPhases:
- retry:
attempts: 3
wait: 1m
backoffMode: LINEAR
- rollback:
destinationPhase: "stable"
Wenn ein Rollout bei dieser Automatisierung für das angegebene Ziel fehlschlägt, wird er bis zu dreimal wiederholt. Zwischen den Wiederholungsversuchen wird jeweils eine Minute gewartet. Wenn alle Wiederholungsversuche fehlschlagen, wird ein Rollback gestartet, indem ein neuer Rollout erstellt wird, um den letzten erfolgreichen Release des Ziels für dieses Ziel bereitzustellen.
Nächste Schritte
Kurzanleitung: Release-Erstellung und Roll-out-Fortschritt automatisieren
Weitere Informationen zur Bereitstellungsautomatisierung in Cloud Deploy