AWS CodePipeline Step by Step with .NET Core - 概要

先日知り合いから、送られてきたリンク

AWS CodePipeline supports parameterized pipelines

AWS CodePipeline に新たなType v2が追加されたとのことで、試してみようかと思ったところ案の定CloudFormation Template やCDKが未対応。。。 なので時折Projectでお話が出てくるCodePipeline をおさらい。(その間にCFnやCDKが対応してくれるといい感じで連載できそう)

Pipeline Toolってたくさんあり、GitLab, Bamboo, Travis CI, Tekton, Jenkins, Github Actions, CircleCI等々。これらのToolに慣れてきた人たちにはちょっと使用法が異なるAWS CodePipeline(私が知る限り似たものはAzure Pipelines - Classic)大きく何が違うかといえば

枠組み作成の事前作成有無

ではないかと。

その前にPipelineの概要を説明すると、各製品毎に呼び名は様々また仕様が若干異なるが、Pipeline 自体は大きく分けて4つの要素から構成される。(今回はAzure Pipelineを元にした)

Pipeline

要素 説明 事前作成
Pipeline Frameであり、ここにはPipelineの実行タイミングや、使用する定数等を定義する。 毎日23時に起動等
Stage Frame。後述するJobを論理的に分割する役割し、Stage間の流れを定義。 Build StageとDeploy Stageの場合、Build Stageが成功した後、Deploy Stageを実行。もちろん1StageでBuildとDeployを包括することも可能。
Job これもFrame。後述するStepをまとめる役割を持つ。製品によってはこの単位で再実行が並列処理が可能だったりする。 複数ContaierをBuildする際、Build for C1, Build for C2, Build for C3 -
Step 実際の処理を定義。 Build Jobの中には、GitからのPull、PackageのRestore、Buildといった具合に処理を記述。 -

AWS CodePipeline や Azure Pipelines - Classic ではPipeline定義時に上記の事前作成が○の項目を用意しておく必要がある。後述する定義ファイル内への記述は不可。一方で他製品、Github Actionsではそれらの事前定義は不要であり、定義ファイルに全てを記述する事ができる。即ち、開発者目線で言えば、前者は一部のみ変更の余地があるが、後者は全て変更できるという事になる。(個人的には後者の方が好み。ただ状況によっては後者の方が適する場合もあるのでは?コンプライアンス的な。。。)

で、話をAWSに戻すと下記のように製品とのマッピングとなる。

要素 AWS
Pipeline Code Pipeline
Stage Code Pipeline
Job Code Pipeline & Code Build & Code Deploy
Step (Code Pipeline) & Code Build & Code Deploy

JobとStepについてはカオスが他のAWS Serviceとの連携は抜群である。正直最初にCodePipelineに触れた時、全く理解できなかった私(今よりも設定が少ない時に)。次回からはストーリーを作って最終的にLambdaあたりをDeployするものを作れたらと考えてます。