このドキュメントでは、デプロイ自動化の概要について説明します。
特定のデリバリー パイプラインのリリース関連タスクとロールアウト関連タスクを自動的に実行するように Cloud Deploy を構成できます。これらのタスクには、リリースのプロモーションとフェーズの進行が含まれます。
Cloud Deploy でのリリース自動化に使用されるリソースの詳細をご覧ください。
これらの自動化の仕組みを定義するルールを設定する方法について詳しくは、こちらをご覧ください。
自動化できるアクション
Cloud Deploy では、次のリリースとロールアウト アクティビティを自動化できます。
-
ターゲットへのロールアウトが成功すると、リリースを自動的にプロモートさせるように Cloud Deploy を構成できます。たとえば、
dev、staging、prodの 3 つのターゲットがある場合、stagingへのデプロイが成功すると、人手を介さずにリリースをprodにプロモートさせるように自動化を構成できます。遅延時間を指定することもできます。 -
cron スケジュールに従ってリリースを昇格させるように Cloud Deploy を構成できます。
-
前のターゲットへのロールアウトが成功すると、次のフェーズへとロールアウトを進行させるように Cloud Deploy を構成できます。フェーズの進展は、カナリア デプロイ戦略を使用するターゲットでのみ使用できます。
-
失敗したロールアウトを自動的に再試行するように Cloud Deploy を構成できます。これには、ロールアウトを指定回数再試行し、その回数の再試行が失敗した場合に自動的にロールバックすることが含まれます。
これらのアクションとその構成方法の詳細については、自動化ルールをご覧ください。
自動化の仕組み
各自動化は、使用されるデリバリー パイプラインに関連付けられています。複数のデリバリー パイプラインで自動化を共有することはできません。
自動化の構成と実行の一般的なプロセスは次のとおりです。
-
この自動化は 1 つのデリバリー パイプラインに関連付けられています。
この自動化は
gcloud deploy applyを使用して登録します。これにより、Automation リソースが作成されます。
この自動化に関連付けられたデリバリー パイプラインを呼び出すには、リリースを作成します。
少なくとも 1 つのターゲットでロールアウトが成功するか、失敗します。
ロールアウトが成功し、自動化が
promoteReleaseRuleの場合:ソース ターゲットでロールアウトが成功するまで実行を待機します。ソース ターゲットとは、
AutomationRuleではなく、自動化用に構成されたselector.targetsです。wait時間が構成されている場合、その時間も実行を待機します。リリースは、進行中のパイプラインの次のターゲット(または、指定されている場合は指定のターゲット)に自動的にプロモートされます。
ロールアウトが成功し、自動化が
advanceRolloutRuleで、ターゲットがカナリア デプロイ戦略を用いている場合:指定されたソース フェーズが存在する場合、実行を待機します。
sourcePhaseプロパティは省略可能です。ソースフェーズが指定されていない場合、ロールアウトの各フェーズは自動的に進行します。ソースフェーズがIN_PROGRESSの場合、wait時間が経過するとフェーズの自動進行が行われます。wait時間が構成されている場合、その時間も実行を待機します。カナリア デプロイを自動化する場合は、この待機時間を使用して、各カナリア フェーズの所要時間を指定します。
ロールアウトは、そのソースフェーズからロールアウトの次のフェーズに自動的に進みます。
追加のソースフェーズがある場合、同じ待機時間(該当する場合)を含め、同じ方法で処理されます。
ロールアウトに失敗し、
repairRolloutルールを含む自動化がある場合:ロールアウトは、構成された
wait時間(存在する場合)後に再試行されます。この
repairRolloutルールで特定のフェーズまたはジョブが構成されている場合、それらのフェーズまたはジョブのみが再試行されます。ジョブまたはフェーズが指定されていない場合のデフォルトでは、ロールアウト内のすべてのフェーズとジョブが再試行されます。再試行は省略可能なため、自動化で再試行が構成されていない場合、このステップは実行されません。
最初の再試行が失敗した場合、実行は構成された
wait時間を待ってから、もう一度試行します。再試行は、Cloud Deploy が再試行回数
attemptsを使い果たすまで繰り返されます。各試行が失敗し、
attemptsが使い果たされると、ロールアウトは失敗します。再試行中、ロールアウトが成功するか、最後の再試行の試行後に失敗するまで、ロールアウトのステータスは
IN_PROGRESSです。フェーズ状態は、再試行中はIN_PROGRESSですが、ロールアウトの失敗後はFAILEDになります。すべての再試行が失敗した場合(または構成されていない場合)、新しいロールアウトが作成され、ターゲットで最後に正常にリリースされたロールバックにロールバックされます。
自動化のリソース
自動化専用の Cloud Deploy リソースは 2 つあります。
自動化
Automationはデリバリー パイプラインの子リソースであり、次の情報が含まれます。- 自動化が使用されるターゲットへのポインタ
- 自動化の処理内容と方法を制御するルール
Automation リソースの構成については、自動化リソースについてをご覧ください。
自動化構成(
kind: Automation)を含むファイルに対してgcloud deploy applyを実行すると、Cloud Deploy はデリバリー自動化リソースを作成します。 この自動化リソースは、パイプラインとターゲットを 1 つまたは複数の自動化ルールに関連付けます。自動化の実行
AutomationRunは自動化のインスタンスです。これは、対応する Automation リソースへのポインタと、それを生成したロールアウトに関する情報、その他のメタデータです。自動化がトリガーされると、自動化の実行が作成されます。
自動化のルール
自動化ルールでは、デリバリー パイプラインで自動的に実行できるアクションと、自動化の実行方法の詳細を定義します。
自動化ルールの詳細をご確認ください。
必要な Identity and Access Management のロールと権限
Cloud Deploy デリバリー パイプラインを実行するために必要な権限、自動化されるタスク(ロールアウト進行など)を行うために必要な権限に加えて、 Automation リソースと AutomationRun リソースに対する特定のオペレーションを実行するためには次のようないくつかの権限が必要です。
clouddeploy.automations.createclouddeploy.automations.deleteclouddeploy.automations.getclouddeploy.automations.listclouddeploy.automations.updateclouddeploy.automationRuns.cancelclouddeploy.automationRuns.getclouddeploy.automationRuns.list
これらの権限に加えて、自動化オペレーションを実行するために、各自動化ルールで追加の権限が必要になる場合があります。自動化ルールごとに必要な権限については、自動化ルールを構成するをご覧ください。
これらの権限を含む Cloud Deploy のロールなど、詳細については、IAM のロールと権限をご覧ください。
自動化の作成
自動化を作成したり、利用可能な自動化ルールのいずれかを使用するためには、自動化を構成してから gcloud deploy apply を使用して自動化リソースを作成します。
次のセクション(自動化の構成)と自動化ルールの構成をご覧ください。
自動化の構成
Automation リソースを構成する方法の詳細については、構成ファイルのスキーマをご覧ください。
自動化ルールの構成
この自動化の構成に加えて、自動化ルールを指定します。構成は、使用可能なルールごとに異なります。
使用可能な各ルールの説明については、自動化ルールの使用をご覧ください。
自動化を一時停止する
既存のリソースは、削除せずに一時停止できます。これは、デリバリー パイプラインに影響を与えることなく自動化をテストする場合に便利です。自動化を一時停止すると、自動化は実行されませんが、プラットフォーム ログは引き続き生成されます。
Automation構成で、suspendedプロパティをtrueに更新します。その構成ファイルに対して
gcloud deploy applyを実行します。プラットフォーム ログは、自動化が一時停止されている場合でも、自動化がインスタンス化されたときに生成されます。これを利用して、デリバリー パイプラインに影響を与えることなく、自動化のテストとデバッグを行えます。
次のステップ
クイックスタート: リリースの作成とロールアウト進行の自動化をご確認ください。
Cloud Deploy の自動化ルールの詳細をご覧ください。
Cloud Deploy の自動化リソースの詳細をご覧ください。
自動化構成ファイルの詳細については、構成ファイルのスキーマのドキュメントをご覧ください。