Your SlideShare is downloading. ×
Drone.io のご紹介
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Drone.io のご紹介

0
views

Published on

http://connpass.com/event/12120/ …

http://connpass.com/event/12120/
はっぴょうしりょう

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
0
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. GMO Pepabo, Inc. 技術基盤チーム Advanced Senior 近藤うちお 2015/03/13 CIツール勉強会@福岡 Drone.ioのご紹介
  • 2. こんにちは
  • 3. me
  • 4. Contributor of Drone.io
  • 5. Drone.io
  • 6. CIツール第三世代? > 第一: とにかく自動で実行する奴 > 第二: Jenkins > 第三: Travis-CI に代表される
 ・設定がyamlなどで簡潔
 ・ビルド環境をクリーンに都度作成
 なやつ
  • 7. Drone.io > Hosting版とOSS版がある ! ! ! ! > https://drone.io/
  • 8. 特徴 > 毎回ビルド環境をDockerで作る > サービスコンテナを別途立ち上げられる > 意外と豊富な外部サービス連携 > SlackやWebhook通知、s3やHerokuなどへの デプロイ > OSS/Apache License v2 > Go製/debやrpmも提供
  • 9. 基本、Drone.io version 0.3の話をします
  • 10. 導入の経緯
  • 11. Jenkinsよ…… > CI自体は全社的に普及していた > しかし > 各チームでJenkinsを立てていてダブってる感 > 一部の人しか触れないJenkins > Jenkinsでは通るけどローカルでどうすれば良 いのか不明なテスト > などなど…
  • 12. ナウいCIしたいんや! > 外部サービスは割と高額 > まずは効果検証のため導入したい > Drone.io ってのがあるよ? > 0.2ぐらいの頃は機能不足…… > 0.3になったらサクっと動いた
  • 13. じゃあ、Drone.io しませんか
  • 14. インストール
  • 15. deb一発 ! ! > 事前にDockerを入れること > 実はDockerは同じホストでなくても良い > rpmはCentOS >= 7向けのようだ > 未検証… # Ubuntu, Debian wget downloads.drone.io/master/drone.deb sudo dpkg -i drone.deb
  • 16. データベース > SQLite3, MySQL, PostgreSQL > SQLite3はさすがにテスト用っぽい のでMySQLかポスグレで > ペパボはMySQL
  • 17. その他設定 > /etc/drone/drone.toml です > 詳細はドキュメント > デフォルトのコメントで空気は分かる…… > 環境変数でも良い > 不便だけど
  • 18. リポジトリの設定 > GitHubなりGH:Eなり設定を有効化 > tomlに項目を追加し、 open=true をセット > ログイン > sync > enable > .drone.yml をプロジェクトルートに配置 してプッシュ→完了
  • 19. .drone.yml 便利機能
  • 20. ビルドイメージのカスタマイズ > 既存で用意されている言語 > ruby, php, node, go, erlangにdartも > バージョンのそろい方が微妙。
 Dockerfileはあるので自作で…… > → https://github.com/drone/drone/blob/master/shared/build/images.go#L174 > ないものは作ればいい > 2パターン > 全く独自にイメージを作る > bradrydzewski/base をベースに作る
  • 21. ビルドのコツ > bradrydzewski/base ベースだと > デフォでrubyとかnode、build-essential、等入り > ubuntuユーザ > drone/* と言う名前でないと正しく使えない > 独自だと、結構自分で色々入れないといけな いっぽい(特にsocatコマンド) > Qiitaにもう書いちゃった… > 「OSS版 Drone.io を社内で使い始めてる話」
  • 22. サービス立ち上げ > テストの実行に必要な外部サービスを指 定できる > MySQL、Redisなど有名どころは組み 込みでサポート ! ! > → https://github.com/drone/drone/blob/master/shared/build/images.go#L20 service: - mysql - redis - mongodb:2.2
  • 23. 特別なサービスが必要なとき > 自分でコンテナを作って指定可能 > コンテナでは、EXPOSEで
 ポートを指定すれば検知してくれる > ポートフォワーディングに
 socat コマンドを使っている模様 service: - udzura/custom-mysql:5.6
  • 24. 通知 > notify: ディレクティブで指定 > email(しょぼい……) > slack > hipchat > webhook
  • 25. Webhook便利 > 組み込みの通知は、
 フォーマットがあまり柔軟じゃない > JSONを食べて別のサービスに渡す だけの簡単なproxyを書いた
  • 26. JSONの様子 > Goで雑にWeb APIを書いた
  • 27. デプロイ系 > publish: と deploy: がある > deploy > Heroku, CloudFoundry, 
 その他git repo, ssh > publish > s3/Swift, Azure, Github Release
  • 28. s3に上げる > 雑に成果物をぶち上げる ! ! ! > 意外と便利 > AWS Keyはハードコードしなくても、
 settingで別途指定可能 publish: s3: acl: public-read region: ap-northeast-1 bucket: hoge-bucket access_key: $$AWS_KEY secret_key: $$AWS_SECRET source: hoge.zip target: hoge/production/$DRONE_BRANCH/ recursive: false when: branch: master
  • 29. Dokkuにプッシュ > Heroku以外にも、git push がで きるということで利用 > 普通にプッシュすれば良い
  • 30. when: 句 > ブランチ、pushした人、などで
 デプロイするしないを判定可能 publish: s3: acl: public-read region: ap-northeast-1 bucket: hoge-bucket access_key: $$AWS_KEY secret_key: $$AWS_SECRET source: hoge.zip target: hoge/production/$DRONE_BRANCH/ recursive: false when: branch: master
  • 31. Hack: Capistrano…… > 対応してないので
 ビルドコマンド側の最後に…… script: # …… - '[ "${DRONE_BRANCH}" != "master" ] && exit 0' # master以外の場合この下は実行しないぞ! - sudo chown -R ubuntu:ubuntu /var/tmp/bundle - mkdir -p vendor - ln -s /var/tmp/bundle vendor/bundle - bundle install --path vendor/bundle - bundle exec cap production deploy ! cache: - /var/tmp/bundle
  • 32. .drone.ymlの便利ドキュメント > https://godoc.org/ github.com/drone/drone/ shared/build/script#Build > godocやんけ…… > しかし一番詳しいし最新だ
  • 33. 運用の実際
  • 34. オンプレツール運用のイメージ > 基本厳しい > インストール困難 > 落ちてエンジニアが一日取られる > 大変ですね…… > 主にGitl○bと言うインストール型ツールが 培ったイメージ…ごにょごにょ
  • 35. Drone.ioは? > インストール楽(1バイナリ最高) > ほぼ全く落ちない > Goって凄いんだな、と思わざるを得ない ……
  • 36. とは言え > バグや機能不足はそれなりにある > 結構どんどん直る > マシンパワーは、まあ要るっすな …… 最近の LA の様子です
  • 37. 困ってる/たこと
  • 38. fdがリークしていた > https://github.com/drone/drone/ issues/644 > 定期的に再起動しないと、too many open files がめっちゃ出てた > 直った →
 https://github.com/drone/drone/ pull/762
  • 39. ハードディスクが足りない! > イメージやコンテナもそうだが、 > 一番でかいのはファイルキャッシュ機能 > リポジトリ ブランチごとに残すので、
 github-flowだととんでもないことに > cronで定期的に消すように > GitHubのdelete webhookを検知してディレクトリ 消せばいいんじゃないかと思うが分散環境じゃ難しいか ……
  • 40. 秘伝のスクリプト $ find /tmp/drone/*/*/*/* -type d -maxdepth 0 | # ディレクトリのみ > grep -v master | # master のキャッシュは消さない > xargs -n 5 --verbose rm -rf # 5件ずつじゃないと進 が…… これを毎週末回して解決(...)
  • 41. 並列数/分散ビルド > workerを追加すればできる > デフォルトでは > 同ホストのdocker.sockを見る > 2つできる(ハードコード) > 同じエントリを追加すれば、エント リの数だけworkerを増やしてくれる
  • 42. 8workerにする例
  • 43. 分散で困ること > どのworkerでビルドするかは選べない > 独自イメージを使ってると
 全台で同期する必要が…… > インハウスなDocker registoryで解決するが
 それはそれで別の、ねえ… > Drone用のDockerfileをリポジトリ管理し、そ のCDをDroneで行う、みたいなのを考えている
  • 44. 率直な感想
  • 45. 強いマシンさえあれば何とかなる? > 運用自体はそこまで難しくない印象 > だいぶ地雷を踏み抜いた > LAは高いが、これ多分
 今も「実験的運用」なのでVM上で
 走らせてるからです……
  • 46. テストのポータブル化が進む > これは非常に大きい > Jenkins上にしかない秘伝のタレを はがす > 手順がリポジトリに必ず入る > 再現可能なテストになる
  • 47. テストがポータブルになると > 将来、「やっぱdroneだめだね…」 となっても、TravisCI/Wercker/ CircleCIなどへ移行するのは手間で はない > それが、とにかくまずDroneを入れ てみる最大のメリットと思う
  • 48. 他の第三世代CIと比べて > CircleCIの方が使いやすいかも…… > 未経験なですが画面等を見た印象 > 最大の違いはオープンソース > 困ったらソースを見れば良い
  • 49. 困ったらソースを
 見れば良い
  • 50. 便利
  • 51. 総括
  • 52. CIをナウくしたいなら > Drone.ioは参入障壁が低い > OSSで無料です
  • 53. CIをナウくしたいなら > Drone.ioは参入障壁が低い > OSSで無料です > まあ、余ったサーバがあればだけど…… > まあ、Dockerの扱いにある程度慣れていれ ば…… > まあ、Goのコードをある程度(ry
  • 54. 自信があるんなら いいんじゃないすかね……
  • 55. テストのポータブル化が重要 > ツールでやりたいのは、そういうこと > 秘伝のタレはがし > 手順をリポジトリに入れる > クリーンな環境で通るようにする > そういう意味では、Drone.io は
 良いきっかけになるのでは?
  • 56. 記事広告
  • 57. Drone.ioを全力で使える仕事あります > GMOペパボは
 福岡/東京ともにエンジニアを
 募集中です。 > アプリケーション/インフラ両方です! > 詳細は:
 http://pepabo.com/recruit/ career/
  • 58. 注目の求人 minne 基盤エンジニア
  • 59. ペパランチョン > カジュアルにエンジニアの話を聞ける制度です
 福岡ではガレリア様のご協力のもと開催中! http://pepabo.com/recruit/pepaluncheon/
  • 60. ご清聴 ありがとうございました!