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
第127回 雲勉【オンライン】今年こそCI/CDをはじめよう! 〜CodeBuildとマブダチ...
Search
iret.kumoben
February 08, 2024
Technology
0
160
第127回 雲勉【オンライン】今年こそCI/CDをはじめよう! 〜CodeBuildとマブダチになる〜
下記、勉強会での資料です。
https://youtu.be/qiF4AcjNt1A
iret.kumoben
February 08, 2024
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第173回 雲勉 ノーコードで生成 AI アプリを構築!Google Cloud AI Applications(旧 Vertex AI Agent Builder)入門
iret
0
33
第170回 雲勉 Lyria が切り拓く音楽制作の未来
iret
1
26
第169回 雲勉 AWS WAF 構築 RTA
iret
0
34
第168回 雲勉 JITNAの使い方とハマったポイントについて語る回
iret
0
36
第167回 雲勉 エージェント開発を加速する Agent Development Kit 入門
iret
1
48
第166回 雲勉 コードを読んで理解する AWS Amplify Gen2 Backend
iret
0
45
第165回 雲勉 Google Agentspace について
iret
0
58
第164回 雲勉 Agent Development Kit と MCP Toolbox for Databases で MCP 連携してみた
iret
1
110
第163回 雲勉 CircleCIで複数リポジトリ間のパイプラインを連携する
iret
1
41
Other Decks in Technology
See All in Technology
アジャイルテストで高品質のスプリントレビューを
takesection
0
110
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
30k
Observability for LLM Application lifecycle
ivry_presentationmaterials
1
240
人を動かすことについて考える
ichimichi
2
320
AIが住民向けコンシェルジュに?Amazon Connectと生成AIで実現する自治体AIエージェント!
yuyeah
0
260
つくって納得、つかって実感! 大規模言語モデルことはじめ
recruitengineers
PRO
18
3.8k
Amazon Bedrock AgentCore でプロモーション用動画生成エージェントを開発する
nasuvitz
6
410
Evolution on AI Agent and Beyond - AGI への道のりと、シンギュラリティの3つのシナリオ
masayamoriofficial
0
150
イオン店舗一覧ページのパフォーマンスチューニング事例 / Performance tuning example for AEON store list page
aeonpeople
1
250
Go で言うところのアレは TypeScript で言うとコレ / Kyoto.なんか #7
susisu
2
760
Postman MCP 関連機能アップデート / Postman MCP feature updates
yokawasa
0
140
AIドリブンのソフトウェア開発 - うまいやり方とまずいやり方
okdt
PRO
9
560
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
It's Worth the Effort
3n
187
28k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Documentation Writing (for coders)
carmenintech
73
5k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
Mobile First: as difficult as doing things right
swwweet
223
9.9k
Producing Creativity
orderedlist
PRO
347
40k
YesSQL, Process and Tooling at Scale
rocio
173
14k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Transcript
第127回 雲勉【オンライン】 今年こそCI/CDをはじめよう︕ ~CodeBuildとマブダチになる〜
0. 自己紹介 松田 啓佑 • 所属 ◦ クラウドインテグレーション事業部 構築第2セクション •
業務 ◦ Webアプリケーション開発における非機能領域全般を担当 ◦ バックエンド、インフラ、オブザーバビリティ • 好きなAWSサービス ◦ Amazon ECS ◦ AWS Step Functions • 認定 ◦ 2023 Japan AWS Top Engineers ◦ iretテクニカルアンバサダー advanced • 趣味 ◦ テニス ◦ 飲酒 2
本日のゴール 3 CodeBuildの基礎を理解することにより、AWS Codeシリーズを利用する敷居を下げる
本日のアジェンダ 4 1. CI/CDとは 2. CodeBuildとは 3. 実際にCodeBuildを使ってみる
5 1. CI/CDとは
6 CI/CDとは • Continuous Integration/Continuous Delivery = 継続的インテグレーション/継続的デリバリー • アプリケーション開発の各ステージを自動化することにより、アプリケーション開発を高速/効率化する手法
CI/CDがない世界 7 時間がかかる ヒューマンエラーが発生する ソースコードの変更 ビルド実施 テスト実施 デプロイ実施 リリース 人がやる範
囲
CI/CDがある世界 8 ソースコードの変更 ビルド実施 テスト実施 デプロイ実施 リリース 人がやる範 囲 時間はかからない
ヒューマンエラーはゼロ
9 CI/CDの重要性 アジリティ(俊敏性)が求められる昨今のアプリ開発において CI/CDは必要不可欠な要素
10 アプリケーションの一般的なリリースサイクル • ソース:ソースコードの更新 • ビルド:コンパイル、単体テスト、コンテナイメージの作成 • テスト:結合テスト、UIテスト、ロードテスト • デプロイ:本番環境への適用
CI/CDではこれら各フェーズを自動化する => 自動化した一連のプロセスをCI/CDパイプラインと呼 ぶ ソース ビルド テスト デプロイ
11 2. CodeBuildとは
12 AWS Codeシリーズとは AWSにおいて、アプリケーションのリリースプロセスを担うサービス 本日の主役
13 AWS Codeシリーズとは 脇役たちの紹介 プライベートなGitリポジトリ AWSリソースへのアプリケーション をデプロイする 他のCodeシリーズを連携させて、 CI/CDパイプラインを構成する
14 CodeBuildとは CodeBuildを一言で表すと、、、 サーバレスな何でも屋さん
15 CodeBuildで何ができるの? • パイプラインにおいてコマンド、プログラムを実行することができる。 • 実行による成果物を後続処理(主にデプロイ)に利用できるようにする。
16 CodeシリーズによるCI/CDパイプラインの構成イメージ 1. CodeCommitレポジトリの発火対象ブランチに変更が加わる 2. CodeBuildにてソースコードのビルドを行う(場合によってはテストを実行する) 3. ビルドされた成果物をCodeDeployにて対象(EC2やECS)にデプロイする ビルド、テスト =
コマンド、プログラムの実行
17 CodeBuildの要素 CodeBuild ビルドプロジェクト ビルド ビルド ビルド • ビルドプロジェクト =
ビルド内の処理を定義した金型 • ビルド = ビルドプロジェクトを元に実行されるビルド処理そのもの
18 サーバレスなビルド環境 • ビルドの実行ごとにコンテナが起動しビルド環境を構築する • コンテナのオペレーティングシステムやプログラミング言語ランタイムは指定可能 • 自前のDockerイメージも利用可能 ビルド環境となるコンピューティングリソースを管理する必要な し
19 アーティファクト • パイプライン内の処理にて利用されるファイル群 • アーティファクトはアーティファクトストア(S3バケット)にて保存される
20 アーティファクトストア アーティファクトストア パイプラインの各処理にてファイルを受け渡すためにアーティファクトストアが利用される
21 ビルドスペックファイル • ビルドの内容を記述したyaml形式のファイル • 各ビルドフェーズにて実行するコマンド、プログラムを定義する • 必須ではないが、特別な理由がない限りは利用するべき
22 buildspec.yml version: 0.2 env: variables: ENV: "prd" phases: install:
runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase… build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar [version] buildspecのバージョン。 0.2以外を選択するケースはない。 [env] ビルド環境で利用する環境変数。 パラメータストアやシークレット マネージャーとの連携も可能。 [phase] ビルド内の各フェーズごとの処理 内容などを定義。 runtime-versionsを定義することで 、ビルド環境の言語ランタイム 指定することが可能。 commandsにコマンドを定義する。 [artifacts] アーティファクトストアに出力す るファイル。後続処理にて利用す るものを指定する。
23 その他機能 VPC内ビルド環境 ビルド環境コンテナをVPC内にて起動することにより、ビルド環境からVPC内のリ ソースへのアクセスが可能。テストなどにてRDSなどを利用することができる。 ビルド環境へのログイン Session Managerによりビルド環境コンテナにログインすることができる。トラブル シュート時に重宝。 バッチビルド
複数のビルドの処理を並列で同時に実行させたりすることができる。 テストレポート ビルドにて実行したテスト結果をレポート形式としてグラフなどの形式で出力するこ とができる。対応しているフォーマットにしたがっていれば利用可能。 ビルドバッジ ビルドステータスを表す埋め込み可能なイメージ。ビルドバッジURLとしてreadme などに埋め込むことで利用できる。 ビルド結果の通知 SNSやChatbotにビルド結果を通知する。これによりビルドが完了したタイミングで Slackやメールを受信することができる。
24 3. 実際にCodeBuildを使ってみる
25 実際に使ってみる ステップ① : ビルド内でコマンドを実行する ステップ② : CodeCommit/CodePipelineと連携させる ステップ③ :
アーティファクトを受け渡す ステップ④ : ビルド環境にログインする ステップ⑤ : Pythonプログラムを実行して、テストレポートを出力する ステップ⑥ : ビルドバッジを利用する
26 ステップ① ビルド内でコマンドを実行する
27 ステップ② CodePipeline/CodeCommitと連携させる
28 ステップ③ アーティファクトを受け渡す
29 ステップ④ ビルド環境にログインする
30 ステップ⑤ Pythonプログラムを実行して、テストレポートを出力する
31 ステップ⑥ ビルドバッジを利用する