Ubuntu 16.04でドローンを使用して継続的統合パイプラインを設定する方法

前書き

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

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

前提条件

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

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

Drone default logged in screen

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

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

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

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

hello_hapi repository page

右上隅にあるForkボタンをクリックして、このリポジトリを自分のアカウントにコピーします。 複数の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を定義するYAMLファイルです。 パイプラインは、複数のステップを次々に実行する継続的な統合プロセスです。 この場合、2段階のパイプラインがあります。

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

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

パイプラインのステップはすべて同じワークスペースを共有するため、最初のステップで作成されたファイルは後のステップで使用できることに注意してください。 ドローンには、.drone.ymlで構成できるオプションが他にもたくさんあり、Drone documentationで読むことができます。 これらの機能の一部は次のとおりです。

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

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

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

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

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

Droneにログインします(まだログインしていない場合)。 ホームページは、セットアップするまでかなりまばらに見えます。 空のサイドバーは、Activate your repositories to get startedを要求します。

Drone default logged in screen

Activateリンクをクリックして、すべてのGitHubリポジトリのリストを表示します。

Drone repository listing

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

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

dashboard link screenshot

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

dashboard with hello_hapi and no build info

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

hello_hapi repo details with no builds

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

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

Create file button on GitHub screenshot

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

Filename and content creation on GitHub screenshot

次に、コンテンツエディタの一番下までスクロールし、Commit new fileボタンをクリックします。

Commit new file on GitHub screenshot

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

Drone dashboard with build in progress

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

CI / CD結果の表示

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

Drone build details

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

Drone build step details

ステップがまだ進行中の場合は、Followボタンをクリックすると、発生した出力が表示されます。

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

結論

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

プロジェクトをビルド、テスト、およびデプロイするためのDroneの構成の詳細については、Drone documentationを参照してください。

Related