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
98
第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
第146回 雲勉 BLEAを眺めてCDKの書き方について学ぶ
iret
1
45
第145回 雲勉 Amazon ECSでサービス間通信する方法を調べてみよう
iret
0
39
第144回 雲勉 Amazon Aurora Serverless v2の基礎とアーキの裏側を覗いてみる
iret
0
84
第143回 雲勉 [New Relic]インフラストラクチャ監視と気をつけたいポイント
iret
0
39
第142回 雲勉 AWS Backupの復元テストで自動化できること・できないこと
iret
0
84
第141回 雲勉 Amazon Inspectorによる脆弱性管理~ECR コンテナイメージ編~
iret
0
200
第2回 雲勉LT大会 パブリッククラウドのサーバレスサービスの違いを調べてみた
iret
0
24
第2回 雲勉LT大会 AWS Control Tower の「コントロール」って何? という謎から AWS Control Tower を知る
iret
0
23
第2回 雲勉LT大会 AWS/Google Cloud/Wasabi ストレージサービスを比較したい
iret
0
43
Other Decks in Technology
See All in Technology
The Role of Developer Relations in AI Product Success.
giftojabu1
0
120
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
110
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
3
200
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
300
Platform Engineering for Software Developers and Architects
syntasso
1
520
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
300
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
590
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
500
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
The Invisible Side of Design
smashingmag
298
50k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
Code Review Best Practice
trishagee
64
17k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
120
Faster Mobile Websites
deanohume
305
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 ステップ⑥ ビルドバッジを利用する