Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
【若手エンジニア応援LT会】CodePipelineのV1とV2の違いを調べてみた件
Search
Kazushi
November 04, 2024
670
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【若手エンジニア応援LT会】CodePipelineのV1とV2の違いを調べてみた件
Kazushi
November 04, 2024
More Decks by Kazushi
See All by Kazushi
emotivEのAI&LLM活用事例
kazushi_ohata
0
120
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
490
【Jr.Champions勉強会】BLEAで始めるAWS環境構築
kazushi_ohata
0
83
【若手エンジニア応援LT会】AWS ACMで証明書の自動更新を設定してみた
kazushi_ohata
1
520
【若手エンジニア応援LT会】AWS Security Hubの活用に苦労した話
kazushi_ohata
1
710
【若手エンジニア応援LT会】AWSで繋がり、共に成長! ~コミュニティ活動と新人教育への挑戦~
kazushi_ohata
0
1.2k
Featured
See All Featured
Producing Creativity
orderedlist
PRO
348
40k
Building an army of robots
kneath
306
46k
Thoughts on Productivity
jonyablonski
76
5.2k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
230
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.6k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Transcript
CodePipelineのV1とV2の違いを調べてみた件 2024/10/30 若手エンジニア応援LT会
自己紹介 • 島村 一歩(しまむら いっぽ) • 某金融中心SIer • インフラ設計・開発・運用保守を担当 •
好きなAWSサービス • ROSA, CodePipeline • ひとこと • Jr.Champion目指して頑張ります!
CodePipeline使ってますか? CodePipeline知ってますか?
CodePipelineとは • ソースコードのビルド、テスト、デプロイを自動化するための CI/CDサービス • ソースコードに対する処理を行う部分を「ステージ」と呼び、 大きく分けて「ソース」、「ビルド」、「デプロイ」で構成 Source (CodeCommit,S3など) CodeBuild
CodeDeploy CodePipeline
CodePipelineの パイプラインタイプ意識したことありますか?
私は6月頃まで意識してませんでした。。 意識したきっかけは後ほどお話しします
CodePipelineには V1、V2 といった2つのタイプが存在する!
簡潔な違いとしては V1:V2より前のパイプラインタイプ V2:2023/10/24からリリース
V2という名のとおり、V1にはなかった、 新機能が多数リリースされました! 今後も様々な機能が出るのではと注目
では、実際にV2から追加された機能で 私が嬉しい・気になった3つの機能を話します!
Source CodeBuild S3 Deploy CodePipeline V2 S3 Approval(手動承認) Build Deploy
version: 0.2 phases: build: commands: - echo "Hello, CodeBuild!“ - echo “test" Buildspec test.txtファイルが S3に出力
新機能1 パイプラインレベル変数 • 2023年10月にリリース • Pipeline実行時に変数を動的に指定できる機能 • S3に出力されるテキストファイル名を動的に作成してみる
新機能1 パイプラインレベル変数 「変更をリリースする」をクリックするとパラメータが入力可能に!
Source CodeBuild S3 Deploy CodePipeline S3 Approval(手動承認) Build Deploy version:
0.2 phases: build: commands: - echo "Hello, CodeBuild!“ - echo “test" Buildspec test.txtファイルが S3に出力 パイプライン変数:jrchampion 指定した変数が使えるように BuildとDeployステージの 変更が必要
新機能1 パイプラインレベル変数 Deployステージ変更 S3への出力設定: #{variables.test}.txt 変数とした「jrchampion」という名前のテキストファイル作成
新機能2 実行モードの追加 • 2024年2月にリリース • Pipeline実行モード 2種類追加 1. SUPERSEDED(デフォルト) ←V1はこのモードのみ
2. QUEUE 3. PARALLEL • QUEUEモード • キューに入れられた順序で1つずつ処理が実行 • PARALLELモード • 他の実行の完了を待たずに開始または終了 個人的に 一番うれしい
新機能2 実行モードの追加 なぜ嬉しい? SUPERSEDED(デフォルト)しかなかった頃、 CodePipelineを使ってアプリを30個以上デプロイしました。。 デフォルトモードでは最大2個までしかストックできない。。 また、Pipelineの並列実行もできない。。 膨大な時間がかかりました。。(1回の実行で10分程度) 最大2個とは?
Source CodeBuild S3 Deploy CodePipeline S3 Approval(手動承認) Build Deploy パイプライン変数:test1
実行モード:SUPERSEDED パイプライン変数:test 「test2」 パイプラインを実行 パイプライン変数:test2 を入力 承認せずに、放置 「test」がいるため 実行待機
Source CodeBuild S3 Deploy CodePipeline S3 Approval(手動承認) Build Deploy パイプライン変数:test2
実行モード:SUPERSEDED パイプライン変数:test 変数「test1」 パイプラインが消える、、 パイプライン変数:
新機能2 実行モードの追加 デフォルトモードで実行 「test」と「test2」 という変数名のファイルは作成されている しかし、「test1」というファイルは作成され ていない(上書きされている)
新機能2 実行モードの追加 実行モード変更 上から • SUPERSEDED • QUEUE • PARALLEL
新機能2 実行モードの追加 QUEUEモードで実行 キューに蓄積されていることが確認できる 「test」、「test1」、「test2」という命名のファイル が作成されていることが確認できる
新機能3 ステージ条件 • 2024年8月にリリース • Pipelineのステージごとに以下条件が設定可能に! 1. 入力条件:ステージ開始前にチェック 2. 成功条件:ステージ終了後、アクション成功時にチェック
3. 終了条件:ステージ終了後、アクション失敗時にチェック • ステージ条件を活用することで、デプロイ開始しないような 条件設定が可能に • CWアラームでワークロードの状態を定義 • デプロイできる時間を事前に定義 成功条件 使ってみた!
Source CodeBuild S3 Deploy CodePipeline S3 Approval(手動承認) Build Deploy 実行モード:SUPERSEDED、QUEUE、PARALLEL
今回は、 デプロイ可能な時間を指定 Ex. 月~木の9:00~17:00など パイプライン変数: 成功条件
新機能3 ステージ条件 成功条件使ってみた 以下時間帯でのみデプロイ可能 • 日本時間:22時~24時 • 曜日 :月曜~金曜
新機能3 ステージ条件 成功条件使ってみた 該当時間内(平日22時~24時)にパイプラインを実行 ファイル作成されていることが確認できた
新機能3 ステージ条件 成功条件使ってみた 該当時間(平日22時~24時)外にパイプラインを実行 ファイルが作成されていないことが確認できた 時間外のためDeployステージ 前で待機状態に
機能面ばかり話していましたが、 では、V1とV2で料金体系変わるのか?
料金体系は変わります V1:アクティブなパイプラインの数(1USD/パイプライン) 無料利用枠:パイプライン1つ分 V2:パイプラインの実行時間(0.002USD/min) 無料利用枠:100分
今後V1かV2で選択するかと思いきや 将来的にV1は無くなる可能性大!
既にコンソールからは、V1の設定不可 (CFn,CDKでは設定可能)
まとめ • パイプラインタイプにはV1,V2が存在する • V2にはV1になかった様々な機能があり、 今後も新規機能がリリースされる可能性高そう • 将来的にV1は無くなる可能性高い (パイプライン1つで検証するならV1の方が料金面では嬉しい?) •
様々な機能があるV2 CodePipelineのどの機能を組み合わせ て、やりたいことが実現できるのか、考えることが大切である
ご清聴ありがとうございました!
参考文献 • AWS CodePipeline のパイプラインタイプ v2 #Git – Qiita •
CodePipeline V2のQUEUEモードをCDKで作って検証してみた • AWS CodePipeline でパラメータ化されたパイプラインのサポートを開始 • CodePipeline にやってきたV2 のアップデートをさらいつつ試してみた - 継続は力なり • AWS CodePipeline V2のアップデート内容をまとめて紹介 - WOR(L)D ワード|大和総研の用語解説サイト • AWS CodePipeline が、パイプラインゲートを実装するためのステージレベルの条件を導入 – AWS • 最近よく見るCodePipeline V2とV1との違いを今こそ理解したい #AWS – Qiita • How pipeline executions work - AWS CodePipeline • CodePipelineのパイプラインタイプ(V1/V2)を比較してみた | DevelopersIO • チュートリアル: パイプラインレベルの変数を使用する - AWS CodePipeline • [アップデート] CodePipeline でステージ条件を設定できるようになりました | DevelopersIO • AWS CodePipeline が、パイプラインゲートを実装するためのステージレベルの条件を導入 – AWS • aws-cdk-lib.aws_codepipeline module · AWS CDK
Appendix
新機能1 パイプラインレベル変数 Buildステージ変更 パイプライン変数名:test 名前(Buildステージ上の変数名):CodeBuildTest 値:#{variables.test} を設定
新機能1 パイプラインレベル変数 Buildステージ変数利用 名前(Buildステージ上の変数名):CodeBuildTest 値:#{variables.test} を設定 version: 0.2 phases: build:
commands: - echo "Hello, CodeBuild!“ - echo “test“ - echo ${CodeBuildTest} Buildspec 書き換え 変数とした「jrchampion」が表示されていることが確認できました
新機能2 実行モードの追加 PARALLELモードで実行 実行したいIDを選択し、 独立したパイプラインとして実行可能(順序考慮不要)
新機能3 ステージ条件 成功条件使ってみた件 該当時間(平日22時~24時)外だが、緊急デプロイが必要な場合は? ファイルが作成されていることが確認できた 「上書き条件」をクリックすることで リリース可能