Node.js アプリケーションのビルド

このページでは、Node.js アプリケーションをビルドしてテストするように Cloud Build を構成する方法について説明します。Cloud Build を初めて使用する場合は、最初にクイックスタートビルド構成の概要をご覧ください。

Cloud Build を使用すると、一般公開されているコンテナ イメージを使用してタスクを実行できます。一般公開の Docker Hub から取得した node イメージには、npmyarn ツールがプリインストールされています。これらのツールを使用し、Node.js をビルドするように Cloud Build を構成できます。

始める前に

このページの説明は、Node.js の知識があることを前提としています。また、次の準備が必要です。

  • Node.js プロジェクトを用意します(package.jsontest.js ファイルを含む)。
  • package.json ファイルに start スクリプトと test スクリプトが含まれていることを確認します。
  • このページで gcloud コマンドを実行するには、gcloud コマンドライン ツールをインストールします。

npm または yarn でビルドを行う

Docker Hub から取得した node イメージでタスクを実行するには、Cloud Build 構成ファイルname フィールドにイメージの URL を指定します。Cloud Build は、イメージのデフォルトのエントリポイントを使用して、name フィールドに指定されたコンテナを開始します。デフォルトのエントリポイントをオーバーライドし、ビルドの呼び出し時のビルドステップの実行方法を定義するには、ビルドステップに entrypoint フィールドを追加します。Docker Hub の node イメージには、npmyarn ツールがプリインストールされています。ビルドステップのエントリポイントとして呼び出すツールを entrypoint フィールドに指定します。

ビルド構成ファイルの例:

  • name フィールドには、Cloud Build がタスクの実行で Docker Hub から取得した node イメージを使用することを指定します。node イメージを指定している場合は、ノード バージョンを省略してデフォルトの :latest を使用することも、ノード バージョンを指定して特定のバージョンを使用することもできます。たとえば、name: node はノードの最新バージョンを使用し、node: node:12node:12 を使用します。
  • entrypoint フィールドには、node イメージの呼び出し時に npm または yarn ツールが使用されることを指定します。

npm

  steps:
  - name: node
    entrypoint: npm

yarn

  steps:
  - name: node
    entrypoint: yarn

Node.js ビルドを構成する

  1. プロジェクトのルート ディレクトリに、cloudbuild.yaml という名前で構成ファイルを作成します。

  2. 依存関係をインストールする: アプリケーションをビルドする前に、すべてのプロジェクトの依存関係が npm または yarn からインストールされている必要があります。依存関係をインストールするには、npm または yarn ビルドステップで install コマンドを使用します。ビルドステップの args フィールドは引数のリストを受け取り、name フィールドによって参照されるイメージに渡します。ビルド構成ファイルで、installargs フィールドに追加して、install コマンドを呼び出します。

    npm

    steps:
    - name: node
      entrypoint: npm
      args: ['install']
    

    yarn

    steps:
    - name: node
      entrypoint: yarn
      args: ['install']
    
  3. テストを追加する: package.jsontest スクリプトを定義した場合、args フィールドに test を追加すると、スクリプトを実行するように Cloud Build を構成できます。

    npm

    steps:
    - name: node
      entrypoint: npm
      args: ['install']
    - name: node
      entrypoint: npm
      args: ['test']
    

    yarn

    steps:
    - name: node
      entrypoint: yarn
      args: ['install']
    - name: node
      entrypoint: yarn
      args: ['test']
    
  4. カスタム コマンドを実行する: package.json にカスタム コマンドが含まれている場合、そのコマンドを実行するように Cloud Build を構成できます。args フィールドに、最初の引数として run を追加し、その後にカスタム コマンドの名前を指定します。次のビルド構成ファイルには、build というカスタム コマンドを実行するための引数が追加されています。

    npm

    steps:
    - name: node
      entrypoint: npm
      args: ['install']
    - name: node
      entrypoint: npm
      args: ['test']
    - name: node
      entrypoint: npm
      args: ['run', 'build']
    

    yarn

    steps:
    - name: node
      entrypoint: yarn
      args: ['install']
    - name: node
      entrypoint: yarn
      args: ['test']
    - name: node
      entrypoint: yarn
      args: ['run', 'build']
    
  5. ビルド構成ファイルを使用してビルドを開始します。

    gcloud builds submit --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]
    

    ここで

    • [CONFIG_FILE_PATH] は、ビルド構成ファイルへのパスです。
    • [SOURCE_DIRECTORY] は、ソースコードのパスまたは URL です。

    gcloud builds submit コマンドに [CONFIG_FILE_PATH][SOURCE_DIRECTORY] を指定しないと、Cloud Build は、構成ファイルとソースコードが現在の作業ディレクトリにあることを前提とします。

複数の node のバージョンでテストを行う

プロジェクトで node の複数のバージョンが必要になる場合があります。このような場合、次のように Cloud Build トリガーを作成して構成します。

  • ビルド構成ファイルで、node のバージョンを代入変数で指定します。
  • アプリケーションをビルドする node のバージョンごとに 1 つのトリガーを作成します。
  • 各トリガーの設定で代入変数値のフィールドを使用し、トリガーに node のバージョンを指定します。

次のステップでは、トリガー固有の代入変数を使用して node のバージョンを指定する方法について説明します。

  1. リポジトリのルートにビルド構成ファイルを追加します。このファイルに node のバージョンを代入変数として指定します。次のビルド構成ファイルの例では、$_NODE_VERSIONユーザー定義の代入変数です。

    npm

    steps:
    - name: node:$_NODE_VERSION
      entrypoint: npm
      args: ['install']
    - name: node:$_NODE_VERSION
      entrypoint: npm
      args: ['test']
    

    yarn

    steps:
    - name: node:$_NODE_VERSION
      entrypoint: yarn
      args: ['install']
    - name: node:$_NODE_VERSION
      entrypoint: yarn
      args: ['test']
    
  2. ビルドトリガーを作成する node のバージョンごとに、次の手順でビルドトリガーを作成します。

    1. Google Cloud Console で [トリガー] ページを開きます。

      [トリガー] ページを開く

    2. ページの上部にあるプロジェクト セレクタのプルダウン メニューからプロジェクトを選択します。

    3. [開く] をクリックします。

    4. [トリガーを作成] をクリックします。

      [トリガーの作成] ページで、次の設定を入力します。

      1. トリガーの名前を入力します。

      2. トリガーを開始するリポジトリ イベントを選択します。

      3. ソースコードとビルド構成ファイルを格納するリポジトリを選択します。

      4. トリガーを開始するブランチまたはタグ名を正規表現で指定します。

      5. ビルド構成: 以前に作成したビルド構成ファイルを選択します。

      6. [代入変数] で [変数を追加] をクリックします。

        1. [変数] には、ビルド構成ファイルで使用した node バージョンの変数を指定します。[] には、node のバージョンを指定します。たとえば、_NODE_VERSION12 です。
    5. [作成] をクリックして、ビルドトリガーを保存します。

これらのトリガーを使用して、トリガーに指定した node のバージョンでコードをビルドできます。

コードの例

以下では、いくつかのサンプル リポジトリを紹介します。各リポジトリには、サンプルの Node.js アプリケーションと、このアプリケーションのビルドとテストに使用するビルド構成ファイルが含まれています。

  • node-example-npm: Node.js アプリと、npm でアプリをビルドするためのサンプルのビルド構成ファイル。
  • node-example-yarn: Node.js アプリと、yarn でアプリをビルドするためのサンプルのビルド構成ファイル。
  • multiple-node-versions-example: node の複数のバージョンでアプリをビルドするためのビルド構成ファイルを含むサンプル。

次のステップ