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
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Y.Sumikura
December 12, 2022
Technology
84
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
Y.Sumikura
December 12, 2022
More Decks by Y.Sumikura
See All by Y.Sumikura
第103回 雲勉【オンライン】インフラエンジニアにおける ChatGPT の便利な使い方と注意点
sumikurayurie1125
1
330
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
190
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC) 入門 〜TerraformとAnsibleを使ってみよう〜
sumikurayurie1125
0
260
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
270
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデータを結合する
sumikurayurie1125
0
390
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
sumikurayurie1125
13
5.1k
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
680
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
200
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイしてLINEBotを作ってみよう
sumikurayurie1125
0
930
Other Decks in Technology
See All in Technology
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
440
見守りエージェントを作ってみた(ローカルLLM + Hermes Agent)
happysamurai294
0
100
誤解だらけの開発生産性 / Myths and Misconceptions about Developer Productivity
i35_267
2
740
【Claude Code】鹿野さんに聞く 私の推しの並行開発環境 大公開 / claude-code-parallel-2026-07-15
tonkotsuboy_com
12
8.4k
第67回コンピュータビジョン勉強会CVPR2026読会前編
tsukamotokenji
0
140
AICoEでAIネイティブ組織への進化
yukiogawa
0
180
DatabricksにおけるMCPソリューション
taka_aki
1
260
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
13
6.3k
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
280
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
300
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
180
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
320
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
How STYLIGHT went responsive
nonsquared
100
6.2k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
900
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Paper Plane (Part 1)
katiecoart
PRO
1
9.7k
Odyssey Design
rkendrick25
PRO
2
730
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
45k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
4 Signs Your Business is Dying
shpigford
187
22k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Transcript
第5回 雲勉LT【オンライン:初心者向け】 GCのサービスだけでCI/CDを構築してみよう 2022.12.13 アイレット株式会社 クラウドインテグレーション事業部
目次 2 • 自己紹介 • はじめに • 本日の主役Cloud Buildとは? •
実際に作ってみましょう! • Cloud Buildを実務で使ってみて、とくに困った・気づいたこと • まとめ
3 自己紹介
自己紹介 4 小林 千紘 クラウドインテグレーション事業部 開発第二セクション 第一グループ 前職では、主にPythonを使ったweb開発をしており、 現在も、かちゃかちゃ開発をしています。コードはごはん。アルゴリズム体操すき。 アイレットに転職し、クラウドをガッツリ触り始めました。
推し言語はRustとGo、 最近嬉しいことは、GCプロフェッショナルパーカーがやっと届いたこと。 どんな人間なの?
5 はじめに
はじめに 6 このLTの対象者は? • GCのCI/CDの全容をざっくり知りたい方 • ポートフォリオを作っているけどGCを取り入れてみたい方
今回のアーキテクチャ図 7 本日の主役
使用技術 8 Google Cloud • Cloud Build • Source Repositories
• Artifact Registry • Cloud Run • Pub/Sub • Cloud Storage その他 • FastAPI • Terraform
9 本日の主役Cloud Buildとは?
本日の主役Cloud Buildとは? 10 なんかすごい
本日の主役Cloud Buildとは? 11 Cloud Buildってなに? Google CloudのCI/CDサービスです。 CI/CDがあると、何がうれしいの? 今まで、テスト・デプロイなど手動でやっていたことを自動化することによって、 もっとアプリの開発に集中できたり、人的ミスを減らしたり、その分人的コストの軽減など...
恩恵はたくさんあります。 (山盛りコードが書けますね。) GCの他サービスGKEやCloud Runなどとの連携がしやすく、一元管理ができる なおかつ、GCサービス内部で完結できれば安全性も高くなったりなど... Cloud Buildならではの嬉しいこと
本日の主役Cloud Buildとは? 12 Cloud Buildってどうやって使うの? Cloud Buildは、大きく分けて ビルドトリガー と Cloud
Build構成ファイル という主に2つのモノを作成します。 ビルドトリガー Cloud Build構成ファイル (cloudbuild.yaml)
本日の主役Cloud Buildとは? 13 ビルドトリガーとは? 何かの監視対象に対してアクションをトリガーするものです。 例えば、mainブランチにコミットされたら、トリガーを引く、という部分になります。 Source Repositories以外にも、GitHubやBitbucketなどもトリガーにできます。 コミットなど、 変化を加える
ビルドトリガーが気づく cloudbuild.yamlを 元にテスト・デプロイな どしてくれる ビルドトリガー Cloud Build周辺の流れ
本日の主役Cloud Buildとは? 14 Cloud Build構成ファイルとは? ビルドトリガーが引かれた後に、どんなテストをするのか、どのコンテナを使用するのか、 ビルドの設定など、詳細について記載したファイルです。 yamlとjsonで作成できます。 コミットなど、 変化を加える
ビルドトリガーが気づく cloudbuild.yamlを 元にテスト・デプロイな どしてくれる Cloud Build構成ファイル Cloud Build周辺の流れ
15 実際に作ってみましょう!
まずは、全体の流れ 16 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact Registryのリポジトリを作る
4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを作成します
使用するサービスのかるい説明 17 Source Repositoriesとは? ソースコードを保管しておくサービスです。 GitHubのリポジトリとミラーリングなどもできます。 Artifact Registryとは? コンテナのイメージを保管しておくサービスです。 ちなみに、Container
Registryというサービスとややこしくなりがちですが、 現在は、Artifact Registryの使用が推奨されています。 言わずと知れた、サーバレスでコンテナを動かすサービスです。 柔軟なオートスケーリングなど魅力が盛りだくさん、かつ、活発にプレビュー版機能が追加されていて まさに、Google Cloudの推しサービス?ですよね。 Cloud Runとは?
使用するサービスのかるい説明 18 FastAPIとは? PythonのAPIフレームワークです。 他のフレームワークより高速、OpenAPIがデフォルトで組み込まれているので、 リファレンスも自動で生成できたり、など... とても便利かつ簡単に使用できるフレームワーク。 UberやNetflixなども使用しているようです。 FastAPI日本語公式サイト https://fastapi.tiangolo.com/ja/
1.FastAPIとDockerfile準備する 19 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact Registryのリポジトリを作る
4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを準備します
1.FastAPIとDockerfile準備する前の情報 20 ディレクトリ構成 使用言語とバージョン情報 • Python (ver.3.10) • FastAPI (ver.0.85)
1-1.FastAPIのプロジェクトなど作る 21 1.FastAPIをインストールする 3.main.pyの中身を作成する 2.プロジェクトディレクトリなど諸々作成する
1-2.Dockerfile作る 22 1.Dockerfileを作成する 2.Dockerfileの中身を作成する
2.Source Repositoriesを作成&プッシュ 23 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact
Registryのリポジトリを作る 4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを作成します
2-1.Source Repositoriesを作成 24 1.リポジトリを追加 2.新しいリポジトリを作成を選択 3.リポジトリ名とプロジェクトIDなど入力する
2-2.Source Repositoriesにプッシュ 25 1.ローカルからリポジトリにプッシュする 書いてあるとおり、gitコマンドでプッシュする
2-2.Source Repositoriesにプッシュ 26 2.ブラウザを更新して、選択すると... 3.無事プッシュされています!
3.Artifact Registryのリポジトリを作る 27 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact
Registryのリポジトリを作る 4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを作成します
3.Artifact Registryのリポジトリを作る 28 1.リポジトリを作成クリックする 2.リポジトリ名とリージョンなど設定する 3.作成されました!
4.Cloud Buildでトリガーを作る 29 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact
Registryのリポジトリを作る 4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを作成します
4-1.cloudbuild.yamlを作成する 30 前提として Cloud Buildは、ステップというタスクを実行していく構造になっています。 ステップごとに、コンテナを作成→タスクを実行→コンテナを破壊 しています。 そのため、次のステップで使用したいデータなどがある場合は注意が必要です。 (/workspaceに書き込むと後続で使用できるようになります。) 詳しくはこちらをご覧ください。
https://cloud.google.com/build/docs/configuring-builds/pass-data-between-steps Cloud Build構成ファイル (cloudbuild.yaml)
4-1.cloudbuild.yamlを作成する 31 cloudbuild.yamlファイルの構造は? 前述のテストやビルドなどの指示をするのが、stepsプロパティです。必須項目です。 他によく使うプロパティは、images, substitutions, availableSecrets 辺りが多いかと思います。 必須!
4-1.cloudbuild.yamlを作成する 32 stepsプロパティはこんな感じになっています ステップ1 ステップ2 ステップ3 name部分で、使用するコンテナを指定します。 あらかじめGC側でイメージを色々用意してくれていますが、自作のイメージをArtifact Registryから使用 することもできます。
4-1.cloudbuild.yamlを作成する 33 imagesプロパティとは? ビルドしたイメージをArtifact Registry(or Container Registry)に保存することができます。 ただし、処理の流れとして、stepsが終わった後にimagesでイメージが保存されるので、 トリガーを分割せず、後続のステップで、 直接Artifact
Registryのイメージを使用する場合は注意が必要です。 ここでCloud Runにデプロイ しているステップがあるので ... steps内で、Artifact Registryに pushするコマンドが必須になり ます。
4-1.cloudbuild.yamlを作成する 34 substitutionsプロパティとは? 環境変数などを指定できます。 設定側は、_から始まるように指定します。使用側は、$_から指定します。 ただし、シークレット情報は、availableSecretsプロパティに指定してください。 availableSecretsプロパティとは? シークレット情報を使用するためのものです。 Secret Managerにシークレット情報を保存して、Cloud
Buildから取得します。 他にも色々プロパティがあるので詳しくはこちらをご覧ください。 https://cloud.google.com/build/docs/build-config-file-schema
4-1.cloudbuild.yamlを作成する 35 ということで、今回使うcloudbuild.yaml ルートディレクトリの直下にcloudbuild.yamlを作成し、Source Repositoriesにプッシュします。
4-2.ビルドトリガーを作る 36 1.トリガーを作成クリックする 3.ソースは先ほど作成した Source Repositoriesのリポジトリを選択 4.cloudbuild.yamlのロケーションは ルートディレクトリの直下を指定 2.トリガー名、リージョン、イベントを設定する
4-2.ビルドトリガーを作る 37 5.作成をクリック 6.無事作成されました!
5.Cloud Runにデプロイされていることを確認してみる 38 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact
Registryのリポジトリを作る 4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを確認します
39 1.適当な変更をプッシュするか、 トリガー一覧画面から手動で実行してみる 3.ビルドトリガーは無事完了したので Cloud Runのエンドポイントにアクセスしてみる 2.トリガーが実行されダッシュボードに表示されます 5.Cloud Runにデプロイされていることを確認してみる
40 4.無事Cloud Runに、Hello Worldされました! 5.Cloud Runにデプロイされていることを確認してみる
41 Cloud Buildを実務で使ってみて、 とくに困った・気づいたこと
Cloud Buildを使ってみて、とくに困った・気づいたこと 42 • Slack通知を飛ばしたい時 • Source Repositoriesとの併用の注意点 • 別プロジェクトにデプロイするには
Slack通知を飛ばしたい時 43 やりたいこと テストやビルドが走った時に、失敗したのか、成功したのか... 通知を受け取りたい! そわそわ、終わったかな〜とGCコンソールで、ブラウザ更新する機械になりたくないですよね...? ビルド、マダカナ...
Slack通知を飛ばしたい時 44 結論 Cloud Buildには通知機能はデフォルトで組み込まれていません。 ただし、GC側で通知用コンテナを用意してくれてます。 通知用コンテナの公式GitHub https://github.com/GoogleCloudPlatform/cloud-build-notifiers/tree/master/slack
Slack通知を飛ばしたい時 45 Slack通知部分の大まかな流れ 1. Slackアプリを作成する 2. 通知用のyamlファイルをCloud Storageに保存する 3. Cloud
Runで通知用コンテナをデプロイする 4. Pub/Subのトピック&サブスクライバーの設定をする https://cloud.google.com/build/docs/configuring-notifications/configure-slack
Slack通知を飛ばしたい時 46 毎回作成するのは大変なので、Terraformにしておくのがオススメです ※以下参考まで Cloud Storage 通知用のyamlファイルのバケット作成など
Slack通知を飛ばしたい時 47 Cloud Run 通知用コンテナのデプロイなど Pub/Sub トピック・サブスクリプションなど
Source Repositoriesとの併用の注意点 48 やりたいこと develop, staging, productionなどそれぞれの環境に切り分けたい イメージとしては、こう考えてました
Source Repositoriesとの併用の注意点 49 結論 自動化する場合、Source RepositoriesとCloud Buildは切り離せません。 なぜなら • GCコンソールでCloud
Buildトリガー作成時に、同じプロジェクトのSource Repositoriesしか表示さ れません。 • CLIでトリガー作成した場合、手動でのみトリガーできるため、コミットしても自動でトリガーされ ません。(トリガー作成は、gcloud alphaを使用します)
GCコンソールでの、Source Repositories選択のようす 50 my-testレポジトリを 別プロジェクトでトリガーしたいのに... どんなに権限を与えても表示されない...
CLIで作成した、手動トリガーの挙動のようす 51 1.CLIでトリガー作成する 3.手動でトリガーした場合のみビルドできる 2.上手く接続できていても、 このようにエラーが出ている... 4.なんとかビルドはできている
Source Repositoriesとの併用の注意点 52 公式からのお言葉 https://cloud.google.com/build/docs/automating-builds/create-manage-triggers とあるので、そもそもプロジェクトを切り離す作りでは無いようです。 ※今回はあくまでも、検証のために無理矢理CLIで切り離したので、個人的にもおすすめはしません。
ということで、CI/CDアーキテクチャ案 53 環境ごとにデプロイするならCDをCloud Deploy構築しても良さそうです。※ただしCloud Runはプレビュー版
別プロジェクトにデプロイするには 54 結論 --projectフラグで指定できます。 Google公式ドキュメントより引用 https://cloud.google.com/sdk/gcloud/reference/run/deploy ページの隅にあるので、見落とさないようご注意ください...
55 まとめ
まとめ 56 まとめ&感想 実際に作成してみていかがだったでしょうか? GCのサービスは、開発エンジニアでも簡単にデプロイできて便利かつ楽しいですよね。 また、今回メインの方のCI/CD部分は、Terraformにしていないので、Terraformで作成してみても理解が 深まって面白かもしれません、ね? 他にも、どんどんCloud Buildの新しい機能を追加されていますので ワクワクしながら、公式リファレンスを見ていただければいいのではないかと思います。
まとめ 57 色々読み物まとめ Cloud Build公式リファレンス https://cloud.google.com/build/docs/overview Cloud Build Slack通知を構成する https://cloud.google.com/build/docs/configuring-notifications/configure-slack
Terrafrom公式リファレンス GoogleCloud https://registry.terraform.io/providers/hashicorp/google/latest/docs Slack API日本語版公式 https://api.slack.com/lang/ja-jp gcloudコマンド公式リファレンス https://cloud.google.com/sdk/gcloud/reference FastAPI日本語公式サイト https://fastapi.tiangolo.com/ja/
58 ご視聴ありがとうございました!