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.2k
1
Share
タグ付けデプロイの話
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
1k
一次元畳み込みフィルターによる音声データのオートエンコーダ
niisantokyo
1
3.7k
TensorFlow.jsに保存機能が実装された件
niisantokyo
1
320
PHP-FPMのコンテナログ2重出力問題
niisantokyo
0
270
Laradockの紹介
niisantokyo
0
1k
deeplearnjsの紹介
niisantokyo
1
240
ひたすら楽して、PHPアプリをコンテナ運用の縮小版
niisantokyo
0
870
PHPでニューラルネットを作った話
niisantokyo
2
4k
Other Decks in Technology
See All in Technology
ふりかえりがなかった職能横断チームにふりかえりを導入してみて学んだこと 〜チームのふりかえりを「みんなで未来を考える場」にするプロローグ設計〜
masahiro1214shimokawa
0
100
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
230
Databricks Lakebaseを用いたAIエージェント連携
daiki_akimoto_nttd
0
160
Webアクセシビリティは“もしも”に備える設計
tomokusaba
0
170
2026年度新卒技術研修 サイバーエージェントのデータベース 活用事例とパフォーマンス調査入門
cyberagentdevelopers
PRO
1
300
【PHPカンファレンス小田原2026】Webアプリケーションエンジニアにも知ってほしい オブザーバビリティ の本質
fendo181
0
240
自分をひらくと次のチャレンジの敷居が下がる
sudoakiy
5
1.9k
Data Enabling Team立ち上げました
sansantech
PRO
0
280
AI時代に新卒採用、はじめました/junior-engineer-never-die
dmnlk
0
180
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
77k
OpenClaw初心者向けセミナー / OpenClaw Beginner Seminar
cmhiranofumio
0
350
OCI技術資料 : 証明書サービス概要
ocise
1
7.2k
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
280
The Pragmatic Product Professional
lauravandoore
37
7.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
250
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
160
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
110
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
670
Design in an AI World
tapps
0
190
The Spectacular Lies of Maps
axbom
PRO
1
680
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.6k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
100
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
91
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がプッシュされた時点で、コンテナのイメージが作成され、そのままステージ ングにデプロイされる • このとき、コミットハッシュがイメージのタグに付与される • コミットにタグが付与されると、対象のコミットハッシュをタグに持ったイメージが本番 環境にデプロイされる •
ステージングにデプロイされたものと環境変数を除いて全く同じ ( であると信じてい る ) 動作環境が本番にデプロイされている • ステージングと本番の同一性を確保することができる