Slide 1

Slide 1 text

CircleCI in CyberAgent 2016.06.10 CircleCI Meetup @stormcat24

Slide 2

Slide 2 text

stormcat24 http://blog.stormcat.io CyberAgent, Inc.

Slide 3

Slide 3 text

2016.01.21 AmebaFRESH! 2016.04.01 AbemaTV FRESH! 2016.06.01 FRESH! by AbemaTV

Slide 4

Slide 4 text

CircleCI and me

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

その他書いた記事 ‣ CircleCIアンチパターン 2015春 ‣ CircleCIからサーバへのSSH接続確立時間を高速化する ‣ CircleCIでサクッとビルドチェーンを実現する ‣ CircleCIのキャッシュ(cache_directories)の挙動を解説するよ ‣ CircleCIで変更があった箇所だけに限定してビルドするテクニック ‣ 大規模な組織で新しいツールを導入するのにはかなりエネルギーがいる話 - CircleCI編 -

Slide 7

Slide 7 text

CircleCI Advent Calendar 2015 http://qiita.com/advent-calendar/2015/circleci

Slide 8

Slide 8 text

CI in CyberAgent

Slide 9

Slide 9 text

AmebaとCI ‣ Ameba(とその他メディア管轄)はGitHub Enterprise(GHE)を 利用 ‣ CIは基本Jenkins ‣ 職人が用意した共通Jenkins ‣ プロジェクトで用意したものや野良Jenkins等 ‣ GHEだとCIの選択肢が限定されるのでツラい

Slide 10

Slide 10 text

アドテクやグループ会社 ‣ GitHub.com(プライベート)を利用 ‣ TravisCIやCircleCIも利用✌( ◔౪◔)✌ ‣ Ameba「ぐぬぬ」

Slide 11

Slide 11 text

CircleCIとAmeba ‣ 2014夏 ‣ @stormcat24がCircleCIの機能検証開始 ‣ @stormcat24がEnterprise版の導入交渉開始 ‣ 2014秋 ‣ @stormcat24が社内的な説得を始める ‣ 2014冬 ‣ Enterprise版お試し導入のGoサインが出る

Slide 12

Slide 12 text

CircleCIとAmeba ‣ 2015/02 ‣ Ameba管轄で(ひっそりと)CircleCI Enterprise(クラウド版)利用開始 ‣ @stormcat24が新規事業(後のFRESH!)へ異動、事実上独占的に利用 ‣ 2015/04 ‣ 正式に導入。他のプロジェクトにじわじわと広まっていく ‣ 2016/04 ‣ クラウド版からオンプレ版に変更

Slide 13

Slide 13 text

気をつけたこと(導入前) ‣ それ、Jenkinsでもできるよね?に屈しない ‣ 可用性に関する疑問への解答 ‣ 大義名分を持とう ‣ CI環境の集約、ノウハウ・ナレッジの共有等 ‣ 運用コスト削減、スタートアップの初速アップ ‣ 銀の弾丸では無いと素直に言う

Slide 14

Slide 14 text

気をつけたこと(導入後) ‣ 基本的にプロジェクト・チーム任せ ‣ 導入に尽力したけど、推進には尽力してない ‣ 各々のCIに対する意識を変えてもらうことが重要 ‣ 誰か一人が頑張りすぎる⇒属人化Jenkinsと変わらない ‣ 本当に困ったときくらいのサポートでいい

Slide 15

Slide 15 text

Use Case

Slide 16

Slide 16 text

Projects ‣ Server Side ‣ Java/Scala/Node/Go ‣ Frontend ‣ Android(Java/Kotlin)

Slide 17

Slide 17 text

Build / Test / Artifacts ‣ ユニットテスト ‣ MySQL, Redis通してのUTとかも ‣ E2Eテスト ‣ APIドキュメント ‣ Crashlyticsにapkアップロード

Slide 18

Slide 18 text

Infrastructure & DevOps ‣ Hubot + Deploy ‣ DB Migration ‣ docker build / docker push ‣ Terraform ‣ Roadworker ‣ Mackerel

Slide 19

Slide 19 text

※運用イメージ(一例)

Slide 20

Slide 20 text

運用イメージ ‣ たいていどこも似たり寄ったりなはず ‣ ビルドトリガーをどうするか。やりやすいものを選べばよいかと ‣ あとはCircleCIに何の責務を担わせるか

Slide 21

Slide 21 text

導入した感想 ‣ 新規プロジェクトこそ向いてる ‣ 組織として、CI環境が統一に向かうのは良いこと ‣ ノウハウの蓄積、野良Jenkinsの整理 ‣ 継続的にJenkinsの面倒見るより楽、属人性DOWN ‣ Pull Request / Review / Testの文化の促進

Slide 22

Slide 22 text

まとめ ‣ 導入戦略は重要です ‣ 導入後はなるべく職人を作らない方向で ‣ 使い倒してCircleCIにフィードバックしましょう ‣ あとはお値段をもう少しお安く ‣ CircleCI盛り上げていきましょう

Slide 23

Slide 23 text

Let’s try CircleCI.