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
130
第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
第155回 雲勉 サーバレスアーキテクチャを 用いたコスト重視 AI サービス
iret
0
41
第154回 雲勉 AWS Codeシリーズ盛り上げ隊 ~ Codeシリーズは砕けない ~
iret
0
38
第153回 雲勉 トラシューが秒で終わる新機能 Amazon Q Developer operational investigations
iret
0
53
第150回 雲勉 AWS AppSyncではじめるGraphQL体験
iret
0
46
第151回 雲勉 プロジェクトのドキュメントにおける課題をAmazon Bedrockで解決してみる
iret
0
62
第152回 雲勉 シームレスなマルチリージョンへの移行と検討 ~Amazon EKSとAWS Global Acceleratorを使用した環境〜
iret
0
58
第149回 雲勉 AWS ベストプラクティスの最新と実際 AWS Well-Architected
iret
0
90
第148回 雲勉 Web アプリケーションセキュリティ
iret
0
53
第147回 雲勉 Amazon CloudWatchをウォッチ!
iret
0
66
Other Decks in Technology
See All in Technology
手を動かしてレベルアップしよう!
maruto
0
240
フォーイット_エンジニア向け会社紹介資料_Forit_Company_Profile.pdf
forit_tech
1
1.7k
技術スタックだけじゃない、業務ドメイン知識のオンボーディングも同じくらいの量が必要な話
niftycorp
PRO
0
120
Qiita Organizationを導入したら、アウトプッターが爆増して会社がちょっと有名になった件
minorun365
PRO
1
210
AWSではじめる Web APIテスト実践ガイド / A practical guide to testing Web APIs on AWS
yokawasa
8
750
OPENLOGI Company Profile
hr01
0
60k
[OpsJAWS Meetup33 AIOps] Amazon Bedrockガードレールで守る安全なAI運用
akiratameto
1
120
サバイバルモード下でのエンジニアリングマネジメント
konifar
9
2.1k
EDRの検知の仕組みと検知回避について
chayakonanaika
12
5.2k
20250304_赤煉瓦倉庫_DeepSeek_Deep_Dive
hiouchiy
2
110
AWS Well-Architected Frameworkで学ぶAmazon ECSのセキュリティ対策
umekou
2
150
Global Databaseで実現するマルチリージョン自動切替とBlue/Greenデプロイ
j2yano
0
150
Featured
See All Featured
Producing Creativity
orderedlist
PRO
344
40k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
How to train your dragon (web standard)
notwaldorf
91
5.9k
What's in a price? How to price your products and services
michaelherold
244
12k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
A better future with KSS
kneath
238
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
650
Adopting Sorbet at Scale
ufuk
75
9.2k
Unsuck your backbone
ammeep
669
57k
For a Future-Friendly Web
brad_frost
176
9.6k
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 ステップ⑥ ビルドバッジを利用する