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
タグ付けデプロイの話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
NIIKURA Ryota
May 30, 2018
Technology
1.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
タグ付けデプロイの話
PHP勉強会126回にて発表した内容です
後ろの2枚は発表では使用しなかったものの、もったいないので、適当につけただけですので、無視しちゃってください
NIIKURA Ryota
May 30, 2018
More Decks by NIIKURA Ryota
See All by NIIKURA Ryota
SwooleでLaravelを高速化してみる
niisantokyo
0
5.2k
新人さんでもテストを書くべきだっていう話
niisantokyo
1
1.1k
一次元畳み込みフィルターによる音声データのオートエンコーダ
niisantokyo
1
3.8k
TensorFlow.jsに保存機能が実装された件
niisantokyo
1
330
PHP-FPMのコンテナログ2重出力問題
niisantokyo
0
270
Laradockの紹介
niisantokyo
0
1k
deeplearnjsの紹介
niisantokyo
1
250
ひたすら楽して、PHPアプリをコンテナ運用の縮小版
niisantokyo
0
880
PHPでニューラルネットを作った話
niisantokyo
2
4k
Other Decks in Technology
See All in Technology
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
11
3.2k
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
1
300
Terraform共通モジュールをチーム横断で“変えられる”運用へ ― リリースと適用の分離
kekke_n
0
640
初めてのDatabricks勉強会
taka_aki
2
240
事業価値を⽣み出すSREへ SREが担うべき意思決定の5層
kenta_hi
1
730
プロダクトだけじゃない、社内プロセスにおける自動化・省力化ノススメ
kakehashi
PRO
1
890
AI時代における最適なQA組織の作り方
ymty
3
400
勉強会企画をアプリで構造化してみた 〜そこで見えた、AIとの付き合い方〜 / I've structured a study group plan using an app.
pauli
0
320
最近評価が難しくなった
maroon8021
0
250
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
1
1.3k
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
2
110
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
230
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
800
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
HDC tutorial
michielstock
2
730
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
230
ラッコキーワード サービス紹介資料
rakko
1
3.8M
Abbi's Birthday
coloredviolet
3
8.5k
Test your architecture with Archunit
thirion
1
2.3k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
410
Optimising Largest Contentful Paint
csswizardry
37
3.8k
Rails Girls Zürich Keynote
gr2m
96
14k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
340
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Transcript
タグでデプロイする PHP勉強会 #126 2018/05/30 株式会社ニジボックス @niisan-tokyo
ワタシ • 右の写真の顔をしたおっさん • エンジニア歴 6年くらい • PHPer歴 ≒ エンジニア歴
• 現在の所属会社、ニジボックス歴は2.5年くら い • 最近のブームは機械学習で音楽生成するって いうテーマ • PCを買い替えてしまった • 地球防衛軍5継続中 • 業務ではGitLabを使用しています
お品書き • タグとリリース • タグとCI • タグデプロイとコンテナ • まとめ
タグとリリース
gitのタグ 特定のコミットにつける、目印 4ggh9wrt rh9854w 08ygrar hoge_tag rh9854w コミットメッセージ タグメッセージ
タグとリリース GitHubではリリースの目印 にタグを使っている
タグとリリース GitlabでもUIでタグをつけるときに、リ リースノートという独自のメッセージを つけることで、リリースを意識してい る
タグにリリースの意味を 持たせることができる ※ タグ自体はただの目印でしかないので、リリースの意味を持たせているのは、開発者側である
タグをつけたらデプロイでええやん! ※github flow だと、master はいつでもデプロイできる状況にってあるけど、いつ何をデプロイし たかとか、やっぱり知っておきたいやん? そこまでコードに自信があるわけではないので、 QA確認済みのコミットをデプロイしたいっていう のが本音
タグとCI
タグとCI • タグつけてデプロイしたい • でも、手動でやるとか面倒だし失敗しそう • CIでタグ付け感知したらデプロイやってくれるとかできたら楽 だなぁ
よく使うカジュアルなCI • Travis CI • Circle CI • GitLab CI
タグとCI ( Travis CI ) https://docs.travis-ci.com/user/customizing-the-build/ (適当意訳) v1.3みたいなフォーマットのタグをビルドにつけたいなら、 /^v\d+\.\d+(\.\d+)?(-\S*)?$/ みたいな正規表現
でビルドのリストに追加できるよ tags っていうフィールドつけるわけにはいかなかったのか、ちょっと 不思議
タグとCI (Circle CI) https://circleci.com/docs/2.0/configuration-reference/#filters-1 一応、特定のタグをCIのトリガーにすることはできる なぜか、上記のExampleにタグをCIに取り入れる例が存在しない
タグとCI (GitLab CI) タグをつけた時だけ jobが走るっていう設定 がある tagの絞り込みの方法はよくわからない リリースにしか使わないと割り切れば問題な い?
タグデプロイとコンテナ ( GitLabの例 )
masterブランチとタグの役割分担 • テストを通す • 動作用のDocker imageを作る • 開発用の環境変数を込めて、ス テージング環境にコンテナをデプ ロイ
• 本番用の環境変数を込めて本番 環境にコンテナをデプロイ masterプッシュ タグづけ
コンテナイメージを介したmasterとタグの協調 accept merge request コンテナ イメージ ステージング環 境 本番環境 tag
v1.2.x master
コンテナデプロイの手順 1. デプロイ対象のコミットにタグをつけます ※ GitlabのタグはUI上でつけ られるので、niisan 不在でもデ プロイができるのだ
コンテナデプロイの手順 2. 終わり CI完了したら、slackに通知する
こんなところが気に入っている • タグをつけるという明確なスイッチがある • CIがデプロイやってくれるので、ミスることは (多分) ない • ステージングで動作確認したコンテナがデプロイされるので、 (よっぽどのことがない限りは)
動作保証されている
気をつけたい点 CIの魔境化 & 属人化 この時点でやばい 意味不明な設定群 恐怖を感じる
まとめ • 今更だけど、リリースバージョンとしてタグを意識してみる • タグとリリースが同一視できるのなら、タグをつけた時にデプロイするのが筋だと考 える • 幸い、CIとタグ付けが連携できる場合が多いので、タグ付けした後のデプロイを自 動化できる •
コンテナ運用はタグ付けデプロイとの相性がいいように思う • CIの魔境化には注意してね
ご静聴ありがとうございます!!!
タグ付けがリリースならば... • そもそもリリースってなんだ? • サービスとかだったら本番デプロイだよな • だったら、タグ付けしたら、本番デプロイするってことでいいかな • デプロイ手動でやるの面倒臭い •
だったら、CIで回せばいいんじゃないか? • CIって、タグに反応してくれるの?
コンテナイメージを使ったタグデプロイの要点 • masterがプッシュされた時点で、コンテナのイメージが作成され、そのままステージ ングにデプロイされる • このとき、コミットハッシュがイメージのタグに付与される • コミットにタグが付与されると、対象のコミットハッシュをタグに持ったイメージが本番 環境にデプロイされる •
ステージングにデプロイされたものと環境変数を除いて全く同じ ( であると信じてい る ) 動作環境が本番にデプロイされている • ステージングと本番の同一性を確保することができる