LoginSignup
20
16

More than 5 years have passed since last update.

drone.ioを使ってCI環境を構築したので、色々整理してみた___<基本編>

Last updated at Posted at 2017-07-30

初めに

drone.png

参加している開発プロジェクトでは、CIツールdroneを使っています。

私はdroneの知識がほぼゼロで、CI環境構築をスタートしたので、ハマリまくりました。
相当苦戦しましたが、先日やっとデプロイパイプラインを作れたので、droneについて、色々整理して書きたいと思います。
※ 使っているdroneはversion 0.7.3になります。
※ つい先日に、droneのversion 0.8がリリースされましたので、興味ある方は【release-0.8.0】を確認してください

詳細なアーキテクチャなどは説明できませんが、
こんな感じでdroneを使っています。
Github Enterprise → drone → AWS
  
Slack
5Fodx3O8rDVwXltL-855CD.png

今回はとりあえず下記2点について、まとめました。
droneの仕様
GithubのWebhook送信から、droneのジョブ実行までの流れ

droneについて、まだまだ理解が足りていないところがたくさんありますので、間違いとかありましたら、ご指摘ください。

droneの仕様

構成

  1. droneにはdrone serverdrone agentがあります。
    • drone server: 管理画面、認証、githubなどとの連携
    • drone agent: ジョブの実行
  2. droneが利用するデフォールトのデータベースはSQLiteで、Docker HubにあるdroneイメージにSQLiteが入っています。ビルド履歴、ユーザ情報、シークレット情報などすべてdatabaseに格納しています。
  3. droneはデフォルトでDocker Hubからイメージを取ってきますが、プライベートのレジストリも利用できます。

ビルドジョブの実行

  1. .drone.ymlにdroneにやって欲しいこと(どの条件でどういったこと)を定義します。
  2. drone serverはやってほしいジョブをキューに入れ、drone agentは順番にキューからジョブを取得し、実行します。
  3. drone serverとdrone agentは指定されたシークレットキー(任意の文字列)でお互いに認証を行い、WebSocketで通信する。

GithubのWebhookから、droneのジョブ実行までの流れ

Github側の設定は、drone公式ページの【GitHub】に記載されています。
GithubのWebhook送信から、droneのジョブ実行までの流れを自分なりに整理しました。間違っていたら、是非ご指摘ください。
スクリーンショット 0029-07-30 12.38.28.png

  1. GitHub上何かしらのイベントが発生したら、GithubがdroneへWebhookを送信します。
    Webhookの詳細内容はGithub → Settings → Webhooksにて確認できます。

  2. drone serverはGithubからのWebhookを確認し、Githubへレスポンスを返信します。

    • Webhookから送られたeventが.drone.ymlに書かれたeventであれば、drone serverがジョブをキューに入れます。
    • 対象ブランチに.drone.ymlがないと、drone serverはGithubにエラーを返します。
      ※ 具体的な動作について、(Goで書かれた)ソースコードを見てもよく分からなかったので、ご存知の方がいれば、是非教えてください。
      Webhook例:
      .drone.ymlがなく、drone serverから404が返された例 01.jpeg
  3. drone agentはキューから順番にジョブを取得します。

  4. drone agentは.drone.ymlに書かれたジョブを実行します。
    4-1: gitのコンテナーを起動して、ソースコードを取得します。
    4-2 ~ 4-n: .drone.ymlに書かれたタスクを順番に実行します。

最後

今回下記2点について、自分なりに整理しました。
droneの仕様
GithubのWebhook送信から、droneのジョブ実行までの流れ

時間がありましたら、SlackでのChatOpsとか自分がハマったところとかについて整理して共有したいと思っています。

20
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
16