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
オリジナリティのあるGitLabを標準に近づける
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
xorphitus
December 20, 2018
Technology
1
760
オリジナリティのあるGitLabを標準に近づける
2018-12-20 Gitlab Meetup Tokyo #12
多量に独自パッチを当てたGitLabをOmnibus Packageに移行した話。
xorphitus
December 20, 2018
Tweet
Share
More Decks by xorphitus
See All by xorphitus
マイクロサービスを作ろう
xorphitus
0
150
コンテナ起動への道
xorphitus
0
160
型システムを学ぼうとした結果
xorphitus
0
69
M-x doctor
xorphitus
0
160
型で数を表そう
xorphitus
0
98
AOT と direct linking
xorphitus
0
77
CFS入門
xorphitus
0
77
HyperLogLog
xorphitus
0
110
immutable database
xorphitus
0
310
Other Decks in Technology
See All in Technology
型を書かないRuby開発への挑戦
riseshia
0
180
製造業ドメインにおける LLMプロダクト構築: 複雑な文脈へのアプローチ
caddi_eng
1
450
Data Hubグループ 紹介資料
sansan33
PRO
0
2.8k
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.1k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
自動テストが巻き起こした開発プロセス・チームの変化 / Impact of Automated Testing on Development Cycles and Team Dynamics
codmoninc
1
1.1k
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
4
1.1k
Security Diaries of an Open Source IAM
ahus1
0
200
マルチロールEMが実践する「組織のレジリエンス」を高めるための組織構造と人材配置戦略
coconala_engineer
2
420
Digitization部 紹介資料
sansan33
PRO
1
7k
Agentic Codingの実践とチームで導入するための工夫
lycorptech_jp
PRO
0
410
Kaggleで鍛えたスキルの実務での活かし方 競技とプロダクト開発のリアル
recruitengineers
PRO
1
150
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.1k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
200
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
96
Technical Leadership for Architectural Decision Making
baasie
3
270
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Context Engineering - Making Every Token Count
addyosmani
9
740
Become a Pro
speakerdeck
PRO
31
5.8k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
80
Designing for Performance
lara
611
70k
Transcript
ΦϦδφϦςΟͷ͋Δ (JU-BCΛඪ४ʹ͚ۙͮΔ 2018-12-20 GITLAB MEETUP TOKYO #12
͡Ίʹ about_me.edn {:name "@xorphitus" :role ["server side engineer", "SRE"] :language
[{:name "Clojure", :desc "ॳ৺ऀ"} {:name "Haskell", :desc "ೖத"} {:name "Rust", :desc "ͦΖͦΖ࢝ΊΔ"}] :keyboard "Nyquist (ࣗ࡞)" :favoite ["xmonad", "single malt whisky"]}
ࠓ͓͑͢Δ͜ͱ ಠࣗύον͔Βͷ։์ ▸ ಠࣗύονΛ30͘Β͍ͯͯΑ͘ҭͬͨGitLabΛOmnibus PackageʹҠߦͨ͠ ▸ ࠓαϚϦ͚ͩհ ▸ ৽نੑͷ͋ΔτϐοΫͳ͍Ͱ͢
Ҡߦͷͷલʹ ͳͥଟྔͷಠࣗύον͍͔ͨͬͯͨ ▸ ϓϩμΫτͱͯ͠ະख़ͩͬͨGitLabΛར༻͍ͯͨͨ͠Ί ▸ গͳ͘ͱ4ܥ͔Βར༻ɺGitHub༧ࢉతʹNG ▸ ݁ՌɺΞοϓάϨʔυ͕ਏ͍ ▸ 100ϑΝΠϧҎ্ͷconflict!
w/o ճؼςετ ▸ ৬ਓʹΑΔmerge͕ඞཁ ▸ ͦͯ͠τϥϒϧγϡʔςΟϯά͕ਏ͍ ▸ ެࣜͷͳͷ͔ɺಠࣗύονͷͳͷ͔ͷΓ͚͕ൃੜ
ಠࣗύονͷଛӹذ ಠࣗύονͷӡ༻ίετ ಠࣗύονʹΑΔϦλʔϯ ࣌ͷྲྀΕ ↑͍·͜͜ ެࣜଆͷػೳڧԽ ʹΑΔϦλʔϯͷ ݮগ ύονͷ૿ՃʹΑ Δίετͷ૿େ
ެࣜGITLABͷਐԽͱಠࣗύονͷՁԼ PROFIT and LOSS
ͦΜͳΘ͚Ͱ Ҡߦ͠·ͨ͠
ಠࣗύονͷͱରࡦ Ҏલͷঢ়گ ରԠํ ιʔεΠϯετʔϧ Omnibus Package RPM MySQLରԠνϡʔχϯά PostgreSQLԽͰఫഇ ݟͨΛ͑Δύον
GitLabͷਐԽΛ৴͡શഇࢭ ػೳՃɾมߋύον ɾGitLabʹಉͷ৽ػೳ ɹ͕͋ΕҠߦ ɾAPIΛར༻͢Δόον࡞ ɾGitLab Pluginͷ׆༻ ɾͲΕແཧͳΒύον ɹͱͯ͢͠
·ͬઌʹݕূͨ͜͠ͱ MySQL͔ΒPostgreSQL ▸ ҎલMySQLͰ͘ͳΔΫΤϦΛಠࣗύονͰղফ͍ͯͨ͠ ▸ MySQLར༻ʹ͖ͭzero downtime upgradeෆՄ ▸ pgloaderͰMySQL͔ΒPostgreSQLσʔλҠߦͨ͠
▸ GitLabͷެࣜυΩϡϝϯτʹར༻ํ๏͕ॻ͍ͯ͋Δ ▸ ύοέʔδ൛ΛͬͨΒώʔϓϝϞϦ͕ෆͨ͠ͷͰɺࣗ લͰϏϧυ
Ͱ͖Δ͚ͩअຐ͠ͳ͍ಠࣗύον ସखஈ͕ͳ͍͕ඞཁͳͷಠࣗύον ▸ ݱࡏͰίϝϯτؚΊ60ߦఔͷRubyϑΝΠϧΛ1ͭઃஔ ͢Δ͚ͩʹͱͲ·͍ͬͯΔ ▸ config/initializers/zzzz_my_patches.rb ▸ GitLabͷRailsͷઃఆͷ্ॻ͖ ▸
ϞϯΩʔύονʹΑΔϥΠϒϥϦͷڍಈมߋ ▸ CapistranoͰGitLab Pluginͱ·ͱΊͯઃஔ
Ռൃද Ҡߦͯ͠ΞοϓάϨʔυָ͕ʹͳͬͨʂ ▸ Before ▸ ४උʹ ▸ ຊ൪ద༻μϯΛ͏ͷͰٳग़ۈ࣮ͯ͠ࢪ ▸ After
▸ ४උɺຊ൪ద༻߹Θͤͯ1࣌ؒ͘Β͍ ▸ ຊ൪ద༻Ͱμϯ͠ͳ͍ͷͰӦۀ࣌ؒதʹ࣮ࢪ ▸ ΞοϓάϨʔυͰτϥϒϧղফͨ͠έʔε݅
͜Ε͔ΒΔ͜ͱ ՝Կ͔ ▸ GitLab Runnerͷ৽ ▸ GitLabຊମ৽Ͱ͖͕ͨɺRunner·ͩख͔ͣ ▸ ver 9.5.0͕AWSͱΦϯϓϨʹෳཱ͍ͬͯΔ…
▸ GKE্ͷߏஙΛݕ౼த
͝ਗ਼ௌ͋Γ͕ͱ ͏͍͟͝·ͨ͠
ఆू
ఆू ಠࣗύονͰ͍ͬͯͨ͜ͱͷସԽͷத ▸ ৽ػೳҠߦͤͨ͞ͷ ▸ GitHubϛϥʔϦϯάػೳ ▸ APIPluginΛ׆༻ͯ͠Γͬͨͷ ▸ LDAP͔Βফ͑ͨϢʔβΛblock͢Δ
▸ WebhookԽͨ͠ͷ ▸ ChatWork௨ઃఆ ▸ ύονͰͳ͍͕ɺMySQLͷఆظόοΫΞοϓʢɾϦετΞʣεΫϦϓτ Omnibus PackageͷػೳΛར༻͢ΔΑ͏ʹมߋ
ఆू ͨ͠ಠࣗύονͷதԿ͔ ▸ ᶃ Markdown rendererͷมߋ ▸ GitLabͰ௨ৗͷվߦΛ<br>ʹͳ͍͕ɺզʑͱͯ͠<br>ʹ ͳͬͯཉ͍͠ ▸
ᶄ ֎෦ͯʹϝʔϧΛૹΒͳ͍Α͏ʹ͢Δ ▸ υϝΠϯ͕ࣾͰͳ͚ΕૹΒͳ͍ɺ҆શஔ ▸ ᶅ ݹ͍ΠϕϯτใΛআ͢Δworkerͷఀࢭ ▸ աڈͷܦҢ͕ࣦΘΕͳ͍Α͏ʹ͢Δରࡦ
ఆू ਏ͔ͬͨ͜ͱ ▸ Ҡߦʹ͍όʔδϣϯΞοϓΛ͕ͨ͠ɺͦ͜ͰΤϥʔ͕ൃੜͨ͠ ▸ ಠࣗύονͷସػೳ࡞ʹGitLab Plugin System͕ඞཁͩͬͨ ▸ ͕ɺόʔδϣϯΛ্͛ͳ͍ͱ͑ͳ͔ͬͨ
▸ όʔδϣϯΛ্͛Δ࣌ʹΔDB migrationͰɺաڈͷෆશͳσʔ λ͕ࠞࡏͯ͠Τϥʔʹͳͬͨ ▸ طଘσʔλ͔Βؾ߹Ͱαϧϕʔδͯ͠ɺΒ͍͠σʔλΛಥͬ ࠐΉεΫϦϓτΛॻ͍ͯԿͱ͔ͨ͠
ఆू Ͳͷ͘Β͍͕͔͔͔࣌ؒͬͨ ▸ 1ਓͰͬͯɺ4ϲ݄͘Β͍ ▸ ݁ߏΔ͜ͱ͕ଟ͔ͬͨ ▸ ଟྔʹ͋Δಠࣗύονͷഎܠཧղ ▸ DBҠߦͷݕূ࡞ۀ
▸ Webhook༻ΤϯυϙΠϯτͷ࡞ΛServerlessͰ͢Δ ▸ Etc