Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

nanapiにおける継続的インテグレーション

7,586 views

Published on

nanapi勉強会 vol3 - 【福岡出張編】nanapiを支える技術
http://nanapi.doorkeeper.jp/events/13586

Published in: Technology
  • Be the first to comment

nanapiにおける継続的インテグレーション

  1. 1. 株式会社nanapi 遠山 晃(@Vexus2) nanapiにおける 継続的インテグレーション
  2. 2. Agenda Introduction Continuous Integration ChatOps radicate a Continuous Integration
  3. 3. Introduction 遠山 晃 / @vexus2 サーバサイド開発がメイン 継続的デプロイ、自動化、プラグイン開発が 得意分野
  4. 4. Our Team
  5. 5. http://ignition.co/ Your everyday source for inspiration and motivation
  6. 6. http://ignition.co/ Your everyday source for inspiration and motivation 今日はnanapi.jpじゃな くてIGNITIONのお話
  7. 7. Language Ruby 2.1.2 Rails 4.1.4 ! (参考) Railsで新規にWebサービスを立ち上げる際にやったことまとめ http://nanapi.co.jp/blog/2014/04/17/rails_development/ Environment
  8. 8. Agenda ChatOps radicate a Continuous Integration Introduction Continuous Integration
  9. 9. CI as a Service GitHosting Platform as a Service Communication Tools development
  10. 10. CI as a Service GitHosting Platform as a Service Communication Tools PUSH development
  11. 11. CI as a Service GitHosting Platform as a Service Communication Tools PUSH Trigger development
  12. 12. CI as a Service GitHosting Platform as a Service Communication Tools PUSH Trigger development Build
  13. 13. CI as a Service GitHosting Platform as a Service Communication Tools PUSH Trigger development asset sync Deploy Build
  14. 14. CI as a Service GitHosting Platform as a Service Communication Tools PUSH Trigger development asset sync Deploy Notification Build
  15. 15. Build/Test Phase
  16. 16. Travis CIだとスペックに難あり Travis CI・・・ 2コア、メモリ3GB Circle CI・・・ 8コア、メモリ16GB Circle CIと比べてビルドが桁違いに遅い SSH accessでCI環境内に入れる ドハマり時の調査/デバッグが捗る なぜCircle CIを使うか?
  17. 17. Auto Testing
  18. 18. Auto Testing
  19. 19. テストが落ちたら SlackにMentionを付けて通知
  20. 20. 余談
  21. 21.
  22. 22. Jenkinsの良いところ 拡張、カスタマイズが自由自在 Jenkinsの微妙なところ オンプレミスなのでサーバ/サービスの維持が必要 各ジョブの設定が秘伝のタレ(=要Jenkins職人)にな りがち 専属チームがメンテし続けるなら良いかも(個人的結論) なぜJenkinsを使わないか
  23. 23. http://wercker.com/ テストを実行する仮想環境(Box)が豊富 プライベートリポジトリもビルドできる β版につき無料 1ビルド最大25分という上限 スモールサービスなら現状の最適解(個人的結論)
  24. 24. 閑話休題
  25. 25. Deploy Phase
  26. 26. 自動デプロイ 基本的にはMasterブランチへのマージで 自動デプロイが走る
  27. 27. 手動デプロイ 必要に応じてHubot経由の手動デプロイ
  28. 28. Deploy Phase どんな小さな対応でも リリース完了はチームで共有
  29. 29. Agenda Introduction Continuous Integration ChatOps radicate a Continuous Integration
  30. 30. GitHubが提唱 Hubotを介した共通タスク周りなどのワー クフローのこと (参考) ChatOps at GitHub https://speakerdeck.com/jnewland/chatops-at-github ChatOpsとは?
  31. 31. nanapiでの使い方の 一例紹介
  32. 32. 大事なことは明示的に通知
  33. 33. 大事なことは明示的に通知
  34. 34. 大事なことは明示的に通知 Pull Requestやテスト失敗など 見逃したら困る情報は強制通知
  35. 35. コンテキストをチームで共有
  36. 36. コンテキストをチームで共有
  37. 37. コンテキストをチームで共有 同じコンテキストを共有した上での会話 チーム全員で同じ情報・状態を共有
  38. 38. うれしいことも共有
  39. 39. うれしいことも共有
  40. 40. うれしいことも共有 楽しいこと、めでたいことはみんなで共有
  41. 41. ネタ系
  42. 42. ネタ系
  43. 43. ネタ系
  44. 44. ネタ系
  45. 45. ネタ系
  46. 46. ネタ系
  47. 47. ネタ系
  48. 48. ネタ系 ネタ要素にも 手を抜かない
  49. 49. nanapi_bot Publicリポジトリで育ててます https://github.com/nanapi/nanapi_bot
  50. 50. Agenda Introduction Continuous Integration ChatOps radicate a Continuous Integration
  51. 51. 継続的インテグレーションを チームに根付かせる
  52. 52. 片手間で導入する のは無理 http://bit.ly/Xzpvvd
  53. 53. 導入までの道のり やることは意外と多い どのツール/サービスを使う?予算は? コード解析系は?テストはどうする? デプロイパイプラインはどう構築する? どのプロセスまでをどの程度まで自動化する? 通知方法はどうする? 通常業務の合間を縫って導入するのは無理
  54. 54. 導入までの道のり やることは意外と多い どのツール/サービスを使う?予算は? コード解析系は?テストはどうする? デプロイパイプラインはどう構築する? どのプロセスまでをどの程度まで自動化する? 通知方法はどうする? 通常業務の合間を縫って導入するのは無理 チーム内で コンセンサスを得る
  55. 55. 社内のエヴァンジェ リストになる http://bit.ly/1onjmaL
  56. 56. 上司が説得出来ない / 納得しない ツールを導入したけどみんなが使ってくれ ない 結果すぐ使わなくなってしまった 「想定した使い方をみんなしてくれない。 うちのチームには向いていなかった」 新規ツール導入あるある
  57. 57. 上司が説得出来ない / 納得しない ツールを導入したけどみんなが使ってくれ ない 結果すぐ使わなくなってしまった 「想定した使い方をみんなしてくれない。 うちのチームには向いていなかった」 新規ツール導入あるある 「明日から○○使うからみんな使ってね」 では絶対に根付かない
  58. 58. エヴァンジェリストになる 誰よりもそのツールを使い、 社内に広げていく
  59. 59. 現状に満足せず、 常に改善し続ける http://bit.ly/WY27aC
  60. 60. IGNITIONの場合
  61. 61. チーム内導入予定
  62. 62. チーム内導入予定 Pull Request
  63. 63. チーム内導入予定 Pull Request Trigger
  64. 64. チーム内導入予定 Pull Request Trigger Test
  65. 65. チーム内導入予定 Pull Request Trigger Trigger Test
  66. 66. チーム内導入予定 Pull Request Trigger Trigger Create Staging Test
  67. 67. チーム内導入予定 Pull Request Trigger Trigger Notification Create Staging Test
  68. 68. チーム内導入予定 Pull Request Trigger Trigger Notification Trigger Create Staging Test
  69. 69. チーム内導入予定 Pull Request Trigger Trigger Notification Trigger Screenshot Create Staging Test
  70. 70. チーム内導入予定 Pull Request Trigger Trigger Notification Trigger Screenshot Create Staging Test ※Teatro.ioのAPI開発完了待ち
  71. 71. 継続的インテグレーションは 一日にして成らず http://bit.ly/1lvjxkp
  72. 72. Thank you!

×