Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OSS Contribution through CircleCI 2.0

Ryo Shibayama
September 15, 2017

OSS Contribution through CircleCI 2.0

Ryo Shibayama

September 15, 2017
Tweet

More Decks by Ryo Shibayama

Other Decks in Technology

Transcript

  1. 自己紹介 サー バサイドエンジニア DevOps / インフラ寄りが好み 1 児の父 東京の西の方に住んでいます 今年の

    3 月から GameWith という会社で働いています と があると幸せを感じます Twitter / GitHub は @serima でやってます!
  2. CircleCI 1.0 ‑> 2.0 を OSS で try する 何故やろうと思ったか

    そもそも 2.0 試してみたかった 社内勉強会のネタとして、OSS へのコントリビュー トとかも絡めて 話せると面白いかも 実際やってみると ビルド時間が結構早くなることに気付く 具体的な数字(= ビルド時間の短縮) が成果として出るので楽しい master にマー ジされると嬉しい
  3. 今日お話すること 何の OSS プロジェクトのビルド時間を短縮してきたか 数々 の . c i r

    c l e c i / c o n f i g . y m l から学ぶベストプラクティス 総括
  4. 成果 Merged : 6 domainr/whois (Golang 98) danger/danger (Ruby 1918)

    danger/danger‑js (JavaScript 515) Ira/mackup (C++ 6345) vim‑jp/vim‑jp.github.io (GitHub Pages 72) facebook/watchman (Python 5844) WIP : 4 jquery/esprima (JavaScript 3964) c3js/c3 (JavaScript 7118) OnsenUI/OnsenUI (JavaScript 5325) yarnpkg/yarn (JavaScript 27376)
  5. どのようにプロジェクトを選んだか 判定基準 c i r c l e . y

    m l がある ( つまり CircleCI 1.0 で CI してる) とはいえ、 ただ置いてあるだけじゃなく、 しっかり利用されて いる感があること TravisCI との兼用パター ンも多いため それなりにスター 数がある メンテ頻度がそれなりに高い
  6. ええい、 検索だ GitHub の Advanced search が使える p a t

    h : / f i l e n a m e : c i r c l e . y m l プロジェクトルー トに c i r c l e . y m l が置いてあることは検索でき る でも、 他の条件指定ができない... ‑> ひたすら見る
  7. 効果のほどは? キャッシュ状況により前後します( あくまで参考値です) repository before after percentage danger/danger‑js 2 分

    8 秒 23 秒 82 % domainr/whois 67 秒 21 秒 69 % facebook/watchman 10 分 31 秒 6 分 58 秒 44 % vim‑jp/vim‑jp.github.io 1 分 44 秒 55 秒 48 % プロジェクトによりけりではありますが、 大いなる効果を実感しました
  8. 移行の感想 OSS はデー タベー スに依存することなどが少ないので、 移行コスト が高くない docker image を複数立ち上げて

    docker 間通信など行う必要 がない git tag によるリリー ス作業が CI に組み込まれているとテストしづ らい ドキュメントも充実していますが、 やはり実際に動作している config を見るのが一番 費用対効果はかなり高い。 余裕があればすぐにでも移行を
  9. 実際に動いている config の探し方 やはり GitHub の Advanced search が使える Path

    指定に . c i r c l e c i を指定したうえで、 w o r k f l o w s など使用した い機能のワー ドでヒットさせる
  10. ベストプラクティス part 1 Print System Information デバッグに有用 - r u

    n : - n a m e : P r i n t S y s t e m I n f o r m a t i o n - c o m m a n d : | e c h o " n o d e $ ( n o d e - v ) " e c h o " n p m v $ ( n p m - - v e r s i o n ) " e c h o " Y a r n v $ ( y a r n - - v e r s i o n ) " e c h o " $ ( g o o g l e - c h r o m e - - v e r s i o n ) "
  11. ベストプラクティス part 2 キャッシュキー には v 1 などのプレフィックスを付ける のちのち便利 -

    s a v e _ c a c h e : k e y : v 1 - n p m - { { . B r a n c h } } - { { c h e c k s u m " p a c k a g e . j s o n " } } p a t h s : - . / n o d e _ m o d u l e s
  12. ベストプラクティス part 3 e2e テストなどでブラウザを利用するテストを走らせる際は P r e - B

    u i l t C i r c l e C I D o c k e r I m a g e s を使うと楽 もともとブラウザが入っている docker image v e r s i o n : 2 j o b s : b u i l d : w o r k i n g _ d i r e c t o r y : ~ / w o r k i n g _ d i r e c t o r y d o c k e r : - i m a g e : c i r c l e c i / n o d e : 6 - b r o w s e r s e n v : - D I S P L A Y = : 9 9 - C H R O M E _ B I N = / u s r / b i n / g o o g l e - c h r o m e
  13. 移行の知見を公開している企業 日本語の資料が少ない中で、 非常に貴重な事例公開に感謝します クラウドワー クス CircleCI 2.0 に移行して新機能を活用したらCI の実行時間が半 分になった話

    SmartHR CircleCI 2.0 が正式リリー スされたので早速移行しました CircleCI 2.0 移行に潜む闇 TokyoOtakuMode CircleCI 2.0 を使うようにするだけで、 こんなに速くなるとは 夢にも思わなかった! Wonder Planet CircleCI 2.0 の正式版がリリー スされたので試してみた
  14. 総括 CircleCI 2.0 はとても良いもの 特に workflow で、 ビルド内での実行順序の制御と依存関係の解決 が可能になったのは大きい 明示的に

    step 実行できるので、 コンフィグファイルを見ればすべ てが分かるのはわかりやすくてよい 公式の実例集がもっとあると助かるなと思いました (/ω・\)チラッ OSS に関わるみんなのビルド時間を短縮できてると思うと胸熱 やっていきましょう