📖

AWS CodePipeline v2で追加された実行モードを検証する

2024/08/31に公開

はじめに

本ページは個人の勉強で使用することを目的に作成しておりますが、記載の誤り等が含まれる場合がございます。
最新の情報についてはAWS公式ドキュメントをご参照ください。

やること

  • CodePipelineの実行モードにはSUPERSEDED|QUEUED|PARALLELの3つがあります。
  • 以下4つのステージで構成されたCodePipelineで、手動承認を実行せず後発のパイプラインを実行した際の挙動をそれぞれ検証します。
ステージ名 サービス
Source CodeCommit
Build CodeBuild
Approval 手動承認 <--承認せずに後発のパイプラインを実行
Deploy CodeDeploy

SUPERSEDEDモード

  1. 実行モードをSUPERSEDEDにします。


  1. Approvalステージ(手動承認) を保留中にします。
  • Approvalステージ(手動承認)実行ID:16ed77c1-8454-48ad-8689-17d3e8c82c9f


  1. 新しいパイプラインを実行させると、Approvalステージ(手動承認) の前にインバウンド実行が発生します。
  • 手動承認ステージ実行ID:16ed77c1-8454-48ad-8689-17d3e8c82c9f
  • インバウンド実行ID:eb85f037-26f1-46d9-972b-f175204b45e5


  1. さらに新しいパイプラインを実行させると、インバウンド実行が上書きされます。
  • 手動承認ステージ実行ID:16ed77c1-8454-48ad-8689-17d3e8c82c9f
  • インバウンド実行ID:eb85f037-26f1-46d9-972b-f175204b45e5 -> 214aaf76-5b34-4c1a-b9ff-70523bba9e10

ポイント

各ステージでは1つの実行しか処理できず、後発の実行は先発の実行の終了まで保留する事になる。
またインバウンド実行は1つの実行しか保持することができず、最新の実行がある場合は置き換えられる。


  1. 手動承認ステージ実行ID:16ed77c1-8454-48ad-8689-17d3e8c82c9fを停止して中止させます。


  1. 手動承認ステージが終了して、インバウンド実行が手動承認ステージに進行します。
    パイプライン実行 ID:214aaf76-5b34-4c1a-b9ff-70523bba9e10


QUEUEDモード(v2必須)

  1. 実行モードをQUEUEDにします。


  1. Approvalステージ(手動承認) を保留中にします。


  1. 新しいパイプラインを実行させると、Approvalステージ(手動承認) の前にキューに入れられた実行が発生します。
  • 手動承認ステージ実行ID:b6d324bc-5f52-4c5a-901e-a6ed3c7519fa


  1. さらに新しいパイプラインを実行させると、キューに入れられた実行2に増加します。


  1. ▼キューに入れられた実行をクリックすると、キュー内の実行を確認することができます。また、デプロイ対象外の実行を停止して中止させる事で任意の実行をデプロイさせる事が出来ます。


ポイント

SUPERSEDEDモードのインバウンド実行では、最新の実行を1つしか保持できないが、QUEUEDモードでは最新のものに上書きされず複数保持できる。


PARALLELモード(v2必須)

  1. 実行モードをPARALLELにします。
  • 実行モードを変更した時点で各ステージは表示されるのみとなる。


  1. パイプラインを実行後、ナビゲーションペインの履歴から進行中となっている実行IDをクリックします。


  1. 手動承認ステージが進行中となっています。
  • 実行ID:fa5b5710-69e8-40f8-a6c7-c57c0b85cdb7


  1. 新しいパイプラインを実行後、ナビゲーションペインの履歴から最新の実行IDをクリックします。


  1. こちらも手動承認ステージは進行中となっています。
  • 実行ID:5d0be31f-8243-4343-8159-6069ddc6d554

  1. 後発のパイプラインが終了後、先発のパイプラインは手動承認ステージが進行中のままとなっています。

ポイント

PARALLELモードではトリガーによりパイプラインがそれぞれ独立して実行される。進行中のパイプラインは終了するまで残り続けるため注意が必要。

おわりに

  • パイプラインの実行モードでは主に多重実行した際の挙動に違いがあります。CodePipeline構築時の参考にしてもらえると幸いです。
  • PARALLELモードは一見多重実行を防止できているようですが、対象のパイプラインが選択できているか?の注意は必要です。
  • SUPERSEDEDモード、QUEUEDモードで多重実行による、インバウンド実行・キューに入れられた実行の発生を防止する方法もあるので記事にしたいと思います。

https://zenn.dev/smori/articles/c7214a8dcdab7b

参考

  • パイプラインの実行モード

https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/execution-modes.html

Discussion