MENU
category

CodePipelineの連続実行が承認待ちで滞留する?

CodePipelineは、GitHubなどのソースへのpushと連携し、push時に自動実行するのが一般的ですが、誤った実行を防ぐため承認ステージを設けるケースがあります。

上記の構成で、GitHubへの連続push が行われた場合、どのような動作になるのかサポートに問い合わせたため、頂いた回答を元に以下に整理します。

前提として、CodePipelineには実行モードがあり、実行モード(SUPERSEDED モード、QUEUED モード)によって動作が異なるため、それぞれの実行モードごとに動作を記載します。

目次

SUPERSEDED モード(デフォルト) の動作

SUPERSEDEDモードでは、承認ステージの前で待機できる実行は1つのみとなります。したがって、承認ステージで承認が行われずに実行が滞っている場合、待機できる実行は最新の実行のみとなります。
したがってプッシュA,B,C,Dと立て続けに4回Githubへプッシュし、承認ステージで承認を行わない場合、以下のような実行状況となります。

  • 承認ステージの前で待機する実行 プッシュD
  • 承認ステージ プッシュAの承認待ち
    ※プッシュB,Cは後続から来たプッシュDに置き換えられる動作。

承認ステージで放置し続けるとどうなる?

承認ステージにはタイムアウト期間があります。デフォルトでは7日間ですが、最小5分、最大60日まで変更が可能です。

タイムアウト期間を超えて承認が行われずに放置された場合、パイプラインの当該実行(承認待ち)が失敗となります。この場合、承認ステージでタイムアウトした実行のみが失敗となり、承認ステージの前で待機していた実行が承認ステージに進みます。
したがってSUPERSEDEDモードにおいて、プッシュA,B,C,Dと立て続けに4回Githubへプッシュし、承認ステージで承認されずタイムアウトした場合、以下のような実行状況となります。

  • 承認ステージの前で待機する実行 プッシュD
  • 承認ステージ プッシュAの承認待ち
    ↓ 承認ステージがタイムアウト
  • 承認ステージの前で待機する実行 なし
  • 承認ステージ プッシュDの承認待ち

QUEUED モードでの動作

QUEUEDモードでは、SUPERSEDEDモードのように待機する実行を上書きすることはありません。実行された順番通りにキューに入れられた状態で待機します。
したがってプッシュA,B,C,Dと立て続けに4回Githubへプッシュし、承認ステージで承認を行わない場合、以下のような実行状況となります。

  • 承認ステージの前でキューに入れられた実行 プッシュB,C,D
  • 承認ステージ プッシュAの承認待ち

参考資料

[1] パイプライン実行の仕組み
https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/concepts-how-it-works.html
[2] AWS CodePipeline のクォータ https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/limits.html

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次