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
980
一次元畳み込みフィルターによる音声データのオートエンコーダ
niisantokyo
1
3.6k
TensorFlow.jsに保存機能が実装された件
niisantokyo
1
310
PHP-FPMのコンテナログ2重出力問題
niisantokyo
0
270
Laradockの紹介
niisantokyo
0
1k
deeplearnjsの紹介
niisantokyo
1
240
ひたすら楽して、PHPアプリをコンテナ運用の縮小版
niisantokyo
0
840
PHPでニューラルネットを作った話
niisantokyo
2
3.9k
Other Decks in Technology
See All in Technology
オブザーバビリティ成熟度モデルの企画から社内導入まで
dmmsre
2
110
AI時代に必要なデータプラットフォームの要件とは by @Kazaneya_PR / 20251107
kazaneya
PRO
4
910
設計は最強のプロンプト - AI時代に武器にすべきスキルとは?-
kenichirokimura
1
310
短期間でRAGシステムを実現 お客様と歩んだ生成AI内製化への道のり
taka0709
1
240
Snowflake Marketplaceには”PODB”という便利なオープンデータがあってAI Ready対応してるらしいよ/the-snowflake-marketplace-has-a-useful-open-data-source-called-PODB-that-is-apparently-AI-ready
shinyaa31
0
260
Data & AIの未来とLakeHouse
ishikawa_satoru
0
650
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
1.3k
エンジニアにとってコードと並んで重要な「データ」のお話 - データが動くとコードが見える:関数型=データフロー入門
ismk
0
270
Pythonで構築する全国市町村ナレッジグラフ: GraphRAGを用いた意味的地域検索への応用
negi111111
8
3.2k
個人開発からエンプラまで。AIコードレビューで開発を楽しもう
moongift
PRO
0
270
フライトコントローラPX4の中身(制御器)を覗いてみた
santana_hammer
1
130
Playwrightで始めるUI自動テスト入門
devops_vtj
0
250
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Bash Introduction
62gerente
615
210k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Writing Fast Ruby
sferik
630
62k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
A better future with KSS
kneath
239
18k
Making Projects Easy
brettharned
120
6.4k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Six Lessons from altMBA
skipperchong
29
4.1k
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がプッシュされた時点で、コンテナのイメージが作成され、そのままステージ ングにデプロイされる • このとき、コミットハッシュがイメージのタグに付与される • コミットにタグが付与されると、対象のコミットハッシュをタグに持ったイメージが本番 環境にデプロイされる •
ステージングにデプロイされたものと環境変数を除いて全く同じ ( であると信じてい る ) 動作環境が本番にデプロイされている • ステージングと本番の同一性を確保することができる