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 | 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するものを作れたらと考えてます。