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
release-please で実現する手軽で不変な Docker イメージタグ付け方法
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
chanyou0311
June 28, 2024
Technology
620
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
release-please で実現する手軽で不変な Docker イメージタグ付け方法
おもにクラウドの話してます - 広島 #2 の発表資料です。
https://omoni-cloud.connpass.com/event/320415/
chanyou0311
June 28, 2024
More Decks by chanyou0311
See All by chanyou0311
5分でわかるDuckDB Quack
chanyou0311
4
260
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.6k
LookerとADKで作る社内AIエージェント
chanyou0311
0
530
「リリース後」に向き合うAI駆動開発の実践
chanyou0311
0
92
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
10
4.4k
5分でわかるDuckDB
chanyou0311
12
4.7k
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
3
2k
データの信頼性を支える仕組みと技術
chanyou0311
6
2.4k
Pulumi に入門してみた
chanyou0311
1
400
Other Decks in Technology
See All in Technology
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
220
水を運ぶ人としてのリーダーシップ
izumii19
4
1.1k
AI 不只幫你寫 Code: 當專案從 300 暴增到 1500, 我們如何撐住 DevOps
appleboy
0
280
ご挨拶「10周年を迎える共創ラボのこれまでとこれから」
iotcomjpadmin
0
150
Comment regagner la souveraineté de vos données tout en étant payé grâce à Nostr !
rlifchitz
0
220
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
7.7k
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
150
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
300
When Platform Engineering Meets GenAI
sucitw
0
200
Zenoh on Zephyr on LiteX
takasehideki
2
130
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
260
初めてのDatabricks勉強会
taka_aki
2
180
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
Speed Design
sergeychernyshev
33
1.9k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
590
Building the Perfect Custom Keyboard
takai
2
800
Faster Mobile Websites
deanohume
310
32k
Transcript
release-please で実現する ⼿軽で不変な Docker イメージタグ付け⽅法 chanyou
Yu Nakamura - chanyou ‧ DRE ← Data Engineer ←
SWE ‧ X: @chanyou0311 ‧ Google Cloud ‧ Azure
突然ですが、 コンテナ使ってますか?🙋
プライベートなアプリケーション開発における コンテナ構築⽅法
クラウドにおけるコンテナ技術
実⾏環境としてのコンテナ ‧Kubernetes でアプリケーションを容易にデプロイできる ‧コンテナ化されたアプリケーションの実⾏環境の整備 ‧AWS ECS ‧Azure App Service ‧GCP
Cloud Run
開発体験の良さ ‧ローカル環境と本番環境の差が⼩さい ‧FaaS だとローカルで動作環境⽤意するのが結構⼤変 ‧CI/CD の構築‧運⽤コストが低い ‧CI/CD パイプラインの再利⽤がしやすい
なぜ本番環境でコンテナを採⽤するのだろうか
Immutable Infrastructure の実現 ‧デプロイしやすい ‧スケールしやすい ‧ロールバックしやすい
コンテナ使えば Immutable Infrastructure を すぐに実現できる?
🙅
Immutable な Image が必要
Google Cloud のベストプラクティスを参考に https://cloud.google.com/architecture/best-practices-for-building-containers
https://cloud.google.com/architecture/best-practices-for-building-containers Google Cloud のベストプラクティスを参考に
セマンティック バージョニングを使⽤したタグ付け https://cloud.google.com/architecture/best-practices-for-building-containers
Git commit ハッシュを使⽤したタグ付け https://cloud.google.com/architecture/best-practices-for-building-containers
イメージのタグ付け難しい… ‧SemVer 😊 利便性は⾼い 😢 ⾃らバージョン番号管理するのは⼤変 ‧Git commit hash 😊
タグ付け⾃体は⾃動化すれば簡単 😢 ⼀つ前のバージョン…ってどれ?
いいとこ取りはできないだろうか 🤔
release-please
release-please > Rease Please automates CHANGELOG generation, the creation of
GitHub releases, and version bumps for your projects. ⾃動でリポジトリを SemVer 管理してくれるツール ‧CHANGELOG の更新 ‧GitHub リリースの作成 ‧任意の JSON や YAML ファイルの更新 https://github.com/googleapis/release-please
利⽤⽅法 ‧GitHub Actions (推奨) ‧CLI (npm) ‧GitHub App
どうやってバージョン管理しているのか Conventional Commits に従ってコミットメッセージを記述しておく https://github.com/googleapis/release-please
どうやっているのか release-please はコミットログのパースを⾏うことで次のバージョン番号 を導き出している v1.0.1 のとき fix: typo → v1.0.2
feat: いいね機能の追加 → v1.1.0
GitHub Actions での例
⽤意するもの (GitHub Actions) workflow: .github/workflows/release-please.yaml `uses: googleapis/release-please-action@v4` を呼び出す config: release-please-config.json
モノレポの場合、各サービスの設定を定義する manifest: .release-please-manifest.json モノレポの場合、各サービスのバージョンを記録する 例) {"frontend":"1.7.0","backend":"2.0.2"}
バージョンが更新されるまでの流れ 1. (開発者) Conventional Commits message で commit して push
する 2. (GitHub Actions) release-please (draft-mode) が実⾏されて PR が作成される 3. (開発者) PR をマージする 4. (GitHub Actions) release-please (deploy-mode) が実⾏される ◦ CHANGELOG の更新 ◦ GitHub リリースの作成 ◦ GitHub Actions で任意の処理の実⾏ ▪ ここで Docker Image の build と push を⾏う
デモ
これから個⼈ブログをリリースします
Docker Image のアーキテクチャ
インフラアーキテクチャ
ディレクトリ構成 .github/workflows/release-please.yaml release-please-config.json .release-please-manifest.json app/Dockerfile app/CHANGELOG.md helm/CHANGELOG.md
Docker Image の push までの流れ
まとめ
まとめ ‧release-please で⼿軽に SemVer を導⼊できた ‧⼿軽で不変な Docker Image の構築ができるようになった ‧Immutable
Infrastructure への扉が開かれた…! ‧コミットメッセージの記法に制約がかかる ‧チーム開発に適⽤できるかは要議論 ‧⽣成AIによるメッセージの補完に期待