Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
release-please で実現する手軽で不変な Docker イメージタグ付け方法
Search
chanyou0311
June 28, 2024
Technology
0
500
release-please で実現する手軽で不変な Docker イメージタグ付け方法
おもにクラウドの話してます - 広島 #2 の発表資料です。
https://omoni-cloud.connpass.com/event/320415/
chanyou0311
June 28, 2024
Tweet
Share
More Decks by chanyou0311
See All by chanyou0311
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
10
3.8k
5分でわかるDuckDB
chanyou0311
11
4.4k
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
3
1.7k
データの信頼性を支える仕組みと技術
chanyou0311
6
2.3k
Pulumi に入門してみた
chanyou0311
1
350
What is DRE? - Road to SRE NEXT@広島
chanyou0311
3
1.2k
データ基盤を支える技術
chanyou0311
9
4.5k
おうちk8s入門 - すごい広島 IT初心者の会 [84]
chanyou0311
1
430
オンラインコミュニケーションの課題と、その乗り越え方
chanyou0311
0
600
Other Decks in Technology
See All in Technology
モダンデータスタック (MDS) の話とデータ分析が起こすビジネス変革
sutotakeshi
0
500
2025年 開発生産「可能」性向上報告 サイロ解消からチームが能動性を獲得するまで/ 20251216 Naoki Takahashi
shift_evolve
PRO
1
180
打 造 A I 驅 動 的 G i t H u b ⾃ 動 化 ⼯ 作 流 程
appleboy
0
350
Jakarta Agentic AI Specification - Status and Future
reza_rahman
0
110
re:Invent 2025 ~何をする者であり、どこへいくのか~
tetutetu214
0
220
「Managed Instances」と「durable functions」で広がるAWS Lambdaのユースケース
lamaglama39
0
320
AWS CLIの新しい認証情報設定方法aws loginコマンドの実態
wkm2
6
740
Fashion×AI「似合う」を届けるためのWEARのAI戦略
zozotech
PRO
2
660
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
130
mairuでつくるクレデンシャルレス開発環境 / Credential-less development environment using Mailru
mirakui
5
520
多様なデジタルアイデンティティを攻撃からどうやって守るのか / 20251212
ayokura
0
460
re:Invent 2025 ふりかえり 生成AI版
takaakikakei
1
210
Featured
See All Featured
Scaling GitHub
holman
464
140k
Making Projects Easy
brettharned
120
6.5k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
730
GitHub's CSS Performance
jonrohan
1032
470k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
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によるメッセージの補完に期待