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
NIIKURA Ryota
May 30, 2018
Technology
1
1.1k
タグ付けデプロイの話
PHP勉強会126回にて発表した内容です
後ろの2枚は発表では使用しなかったものの、もったいないので、適当につけただけですので、無視しちゃってください
NIIKURA Ryota
May 30, 2018
Tweet
Share
More Decks by NIIKURA Ryota
See All by NIIKURA Ryota
SwooleでLaravelを高速化してみる
niisantokyo
0
5k
新人さんでもテストを書くべきだっていう話
niisantokyo
1
970
一次元畳み込みフィルターによる音声データのオートエンコーダ
niisantokyo
1
3.5k
TensorFlow.jsに保存機能が実装された件
niisantokyo
1
310
PHP-FPMのコンテナログ2重出力問題
niisantokyo
0
270
Laradockの紹介
niisantokyo
0
1k
deeplearnjsの紹介
niisantokyo
1
240
ひたすら楽して、PHPアプリをコンテナ運用の縮小版
niisantokyo
0
830
PHPでニューラルネットを作った話
niisantokyo
2
3.9k
Other Decks in Technology
See All in Technology
stupid jj tricks
indirect
0
7.9k
20250929_QaaS_vol20
mura_shin
0
110
LLMアプリケーション開発におけるセキュリティリスクと対策 / LLM Application Security
flatt_security
7
1.8k
Optuna DashboardにおけるPLaMo2連携機能の紹介 / PFN LLM セミナー
pfn
PRO
1
870
Why Governance Matters: The Key to Reducing Risk Without Slowing Down
sarahjwells
0
100
「技術負債にならない・間違えない」 権限管理の設計と実装
naro143
36
11k
KMP の Swift export
kokihirokawa
0
330
Function calling機能をPLaMo2に実装するには / PFN LLMセミナー
pfn
PRO
0
910
ACA でMAGI システムを社内で展開しようとした話
mappie_kochi
0
250
成長自己責任時代のあるきかた/How to navigate the era of personal responsibility for growth
kwappa
3
270
バイブコーディングと継続的デプロイメント
nwiizo
2
410
AIAgentの限界を超え、 現場を動かすWorkflowAgentの設計と実践
miyatakoji
0
130
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
9.5k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Six Lessons from altMBA
skipperchong
28
4k
Gamification - CAS2011
davidbonilla
81
5.5k
For a Future-Friendly Web
brad_frost
180
9.9k
Visualization
eitanlees
148
16k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Docker and Python
trallard
46
3.6k
Automating Front-end Workflow
addyosmani
1371
200k
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がプッシュされた時点で、コンテナのイメージが作成され、そのままステージ ングにデプロイされる • このとき、コミットハッシュがイメージのタグに付与される • コミットにタグが付与されると、対象のコミットハッシュをタグに持ったイメージが本番 環境にデプロイされる •
ステージングにデプロイされたものと環境変数を除いて全く同じ ( であると信じてい る ) 動作環境が本番にデプロイされている • ステージングと本番の同一性を確保することができる