前書き

Droneは、Goで記述された継続的な統合および配信プラットフォームです。 多くの一般的なバージョン管理サービスとの統合により、コードを更新するたびにソフトウェアを自動的に構築、テスト、配信できます。

このチュートリアルでは、サンプルのGitHubリポジトリをフォークし、Droneを使用してプロジェクトをビルドおよびテストします。

前提条件

このチュートリアルを開始する前に、Droneをインストールし、構成し、GitHubアカウントにリンクする必要があります。 次のチュートリアルをご覧ください。

完了したら、次のような画面でDroneにログインする必要があります。

image:https://assets.digitalocean.com/articles/drone-ci/logged-in-screen.png [ドローンのデフォルトのログイン画面]

これはドローンのダッシュボードです。 ログインしているが、ドローンにリポジトリが設定されていないことを示しています。 リポジトリを作成しましょう。

サンプルリポジトリのフォーク

最初に、ビルドとテストのためのコードを備えたGitHubリポジトリが必要です。 Droneはさまざまなバージョン管理リポジトリで使用できますが、前提条件ではDroneをGitHubアカウントにリンクしているため、このチュートリアルではそれを使用します。 GitHubにログインして、次のリポジトリに移動します。

https://github.com/do-community/hello_hapi

image:https://assets.digitalocean.com/articles/drone-ci/hello-hapi-repo.png [hello_hapiリポジトリページ]

右上隅の[フォーク]ボタンをクリックして、このリポジトリを自分のアカウントにコピーします。 複数のGitHub組織にアクセスできる場合は、リポジトリの分岐先を選択するよう求められる場合があります。 通常のユーザーアカウントを選択します。 しばらくすると、アカウントにコピーされた* hello_hapi *リポジトリに移動します。

次に、コードをビルドおよびテストするためにDroneを構成する方法を見ていきます。

.drone.ymlファイルについて

ドローンは、リポジトリで `+ .drone.yml +`という名前の設定ファイルを探して、コードの処理方法を決定します。 このファイルは、分岐したばかりのリポジトリに既に含まれています。

drone.yml
pipeline:
 build:
   image: node:latest
   commands: npm install
 test:
   image: node:latest
   commands: npm run test

これは、_pipeline_を定義するhttp://yaml.org/[YAML]ファイルです。 パイプラインは、複数のステップを次々に実行する継続的な統合プロセスです。 この場合、2段階のパイプラインがあります。

+ build +`と呼ばれる最初のステップでは、 `+ node:latest Dockerイメージを使用して、リポジトリで` + npm install`を実行します。 これにより、テストの実行に必要なすべてのライブラリがダウンロードおよびインストールされます。

次のステップは「+ test 」と呼ばれます。 同じDockerイメージを使用してテストスイートを実行します。 多くの場合、「 build」コマンドと「+ test」コマンドの両方を1つのステップで実行しますが、パイプラインをより適切に示すためにそれらを分割しました。

パイプラインのステップはすべて同じワークスペースを共有するため、最初のステップで作成されたファイルは後のステップで使用できることに注意してください。 Droneには、 `+ .drone.yml +`で設定できるオプションがさらにあります。これについては、http://docs.drone.io/ [Drone documentation]で確認できます。 これらの機能の一部は次のとおりです。

  • マトリックスビルド。ライブラリまたはランタイムの複数のバージョンに対してビルドとテストを行い、互換性を確認します。

  • 電子メールまたはメッセージングサービスを介した通知

  • npm、コンテナレジストリ、または静的サイトホストへのビルド製品の公開

次に、リポジトリへの変更を監視し、ビルドをトリガーするようドローンに指示します。

継続的インテグレーションの実行のトリガー

Droneにログインします(まだログインしていない場合)。 ホームページは、セットアップするまでかなりまばらに見えます。 空のサイドバーは、リポジトリをアクティブ化して開始するように促します*。

image:https://assets.digitalocean.com/articles/drone-ci/logged-in-screen.png [ドローンのデフォルトのログイン画面]

[アクティブ化]リンクをクリックして、すべてのGitHubリポジトリのリストを表示します。

画像:https://assets.digitalocean.com/articles/drone-ci/drone-repo-list.png [ドローンリポジトリ一覧]

  • hello_hapi *リポジトリを見つけて、右側の列の灰色のトグルをクリックしてアクティブにします。 トグルが反転し、緑色に変わります。 背後では、ドローンはGitHubのAPIを使用して、コードが変更されるたびに通知を受け取るようにします。

画面の左上隅にあるドローンのロゴをクリックするか、ユーザーアイコンの横の右上隅にあるメニューを使用して、ホームページのダッシュボードに戻ります。

画像:https://assets.digitalocean.com/articles/drone-ci/dashboard-link.png [ダッシュボードリンクスクリーンショット]

これで、ダッシュボードの左側の列に新しいリポジトリがリストされます。 ビルドを実行していないため、ステータス情報はまだありません。

image:https://assets.digitalocean.com/articles/drone-ci/dashboard-waiting.png [hello_hapiのダッシュボードとビルド情報なし]

  • hello_hapi リポジトリー名をクリックして、リポジトリーの詳細ビューを入力します。 設定を更新し、トークンやパスワードなどのシークレットを追加し、埋め込み可能なビルドステータスバッジを取得できるタブがいくつかあります。 デフォルトでは、 Builds *タブにあり、ビルドはまだリストされていません。

image:https://assets.digitalocean.com/articles/drone-ci/repo-no-builds.png [ビルドなしのhello_hapiレポの詳細]

ビルドをトリガーしましょう。

Droneページを開いたままにして、別のタブまたはウィンドウで* hello_hapi * GitHubリポジトリに移動します。 ビルドをトリガーするために、プロジェクトにファイルを追加します。 どのファイルでもかまいません。 レポジトリのファイルリストの上部にある[* Create new file *]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/drone-ci/create-file.png [GitHubスクリーンショットの[ファイルの作成]ボタン]

任意のファイル名を選択します。 この場合、「+ trigger-file」を選択しました。 コンテンツを入力してください:

image:https://assets.digitalocean.com/articles/drone-ci/create-file-content.png [GitHubスクリーンショットでのファイル名とコンテンツの作成]

次に、コンテンツエディターの下部までスクロールし、[新しいファイルをコミット]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/drone-ci/create-file-commit.png [GitHubスクリーンショットで新しいファイルをコミット]

コミット時に、GitHubはDroneインストールに変更を通知します。 その後、ドローンは新しいビルドを開始します。 Droneブラウザウィンドウに戻ります。 インターフェースはかなり速く更新されるはずで、回転する矢印はビルドが行われていることを示します。

image:https://assets.digitalocean.com/articles/drone-ci/build-triggered.png [ビルド中のドローンダッシュボード]

ドローンに切り替えるのに少し時間がかかった場合、すでに終了している可能性があります。 次にビルドの詳細を見てみましょう。

CI / CD結果の表示

ビルドをクリックして詳細ビューに入ります。 ビルドがまだ進行中の場合は、各パイプラインステップをリアルタイムで観察できます。

image:https://assets.digitalocean.com/articles/drone-ci/build-detail-complete.png [ドローンビルドの詳細]

各ビルドステップの開示矢印をクリックして、詳細を表示できます。 * test *ステップの出力は次のとおりです。

image:https://assets.digitalocean.com/articles/drone-ci/build-step-details.png [ドローンビルドステップの詳細]

ステップがまだ進行中の場合、*フォロー*ボタンをクリックすると、出力が表示されます。

`+ .drone.yml +`ファイルで定義していない* clone *ステージがあることに注意してください。 これは常に存在し、ビルド前にドローンがソースコードを取得する方法の詳細を提供します。

結論

このチュートリアルでは、デモンストレーションリポジトリをフォークし、 `+ .drone.yml +`設定ファイルを調べ、Droneでリポジトリを構築してテストしました。

プロジェクトをビルド、テスト、デプロイするためのDroneの設定の詳細については、http://docs.drone.io/ [Drone documentation]を参照してください。