Search Results for ""

Node.js - JavaScript チュートリアル

ここでは、Node.js サンプルアプリケーションの .circleci/config.yml ファイルを作成する方法を詳細に説明します。

クイックスタート:デモ用の JavaScript Node.js リファレンスプロジェクト

CircleCI 2.0 で Express.js アプリケーションをビルドする方法を示すために、JavaScript Node.js リファレンスプロジェクトが用意されています。

このプロジェクトには、CircleCI 設定ファイル .circleci/config.yml が含まれます。 このファイルは、Node プロジェクトで CircleCI 2.0 を使用するためのベストプラクティスを示しています。

CircleCI のビルド済み Docker イメージ

CircleCI のビルド済みイメージを使用することをお勧めします。このイメージには、CI 環境で役立つツールがプリインストールされています。 Docker Hub (https://hub.docker.com/r/circleci/node/) から必要な Node バージョンを選択できます。 デモプロジェクトでは、公式 CircleCI イメージを使用しています。

セカンダリ「サービス」コンテナとして使用するデータベースイメージも提供されています。

JavaScript Node のデモプロジェクトのビルド

CircleCI を初めて使用する際は、プロジェクトをご自身でビルドしてみることをお勧めします。 以下に、ユーザー自身のアカウントを使用してデモプロジェクトをビルドする方法を示します。

  1. GitHub 上のプロジェクトをお使いのアカウントにフォークします。
  2. CircleCI で [Add Projects (プロジェクトの追加)] ページにアクセスし、フォークしたプロジェクトの横にある [Build Project (プロジェクトのビルド)] ボタンをクリックします。
  3. 変更を加えるには、.circleci/config.yml ファイルを編集してコミットします。 コミットを GitHub にプッシュすると、CircleCI がそのプロジェクトをビルドしてテストします。

設定例

以下に、デモプロジェクトのコメント付き .circleci/config.yml ファイルを示します。

version: 2 # CircleCI 2.0 を使用します
jobs: # ステップの集合
  build: # Workflows を使用しない実行では、エントリポイントとして `build` ジョブが必要
    working_directory: ~/mern-starter # ステップが実行されるディレクトリ
    docker: # Docker でステップを実行します

      - image: circleci/node:4.8.2 # このイメージをすべての `steps` が実行されるプライマリコンテナとして使用します
      - image: mongo:3.4.4 # このイメージをセカンダリサービスコンテナとして使用します
    steps: # 実行可能コマンドの集合
      - checkout # ソースコードを作業ディレクトリにチェックアウトする特別なステップ
      - run:
          name: update-npm
          command: 'sudo npm install -g npm@latest'
      - restore_cache: # 依存関係キャッシュを復元する特別なステップ
          # 依存関係キャッシュについては https://circleci.com/docs/ja/2.0/caching/ をお読みください
          key: dependency-cache-{{ checksum "package-lock.json" }}
      - run:
          name: install-npm-wee
          command: npm install
      - save_cache: # 依存関係キャッシュを保存する特別なステップ
          key: dependency-cache-{{ checksum "package-lock.json" }}
          paths:
            - ./node_modules
      - run: # テストを実行
          name: test
          command: npm test
      - run: # カバレッジレポートを実行します
          name: code-coverage
          command: './node_modules/.bin/nyc report --reporter=text-lcov'
      - store_artifacts: # テスト結果をアーティファクトとして保存する特別なステップ
          # アーティファクト (https://circleci.com/docs/ja/2.0/artifacts/) に表示するテストサマリーをアップロードします
          path: test-results.xml
          prefix: tests
      - store_artifacts: # アーティファクト (https://circleci.com/docs/ja/2.0/artifacts/) に表示するため
          path: coverage
          prefix: coverage
      - store_test_results: # テストサマリー (https://circleci.com/docs/ja/2.0/collect-test-data/) に表示するため
          path: test-results.xml
      # デプロイ例については https://circleci.com/docs/ja/2.0/deployment-integrations/ を参照してください

設定の詳細

config.yml は必ず version キーから始まります。 このキーは、互換性を損なう変更に関する警告を表示するために使用されます。

version: 2

1回の実行は 1つ以上のジョブで構成されます。 この実行では Workflows を使用していないため、build ジョブを持つ必要があります。

working_directory キーを使用して、ジョブの steps を実行する場所を指定します。 working_directory のデフォルトの値は ~/project です (project は文字列リテラル)。

ジョブのステップは Executor という名前の仮想環境で実行されます。

この例では docker Executor を使用して、カスタム Docker イメージを指定しています。 リストの先頭にあるイメージがジョブのプライマリコンテナになります。 ジョブのすべてのコマンドは、このコンテナで実行されます。

jobs:
  build:
    working_directory: ~/mern-starter
    docker:
      - image: circleci/node:4.8.2
      - image: mongo:3.4.4

ジョブのコンテナを選択したら、いくつかのコマンドを実行する steps を作成します。

checkout ステップを使用して、ソースコードをチェックアウトします。 デフォルトでは、working_directory で指定されたパスにソースコードがチェックアウトされます。

実行の間隔を短縮するには、依存関係またはソースコードのキャッシュを検討してください。

save_cache ステップを使用して、いくつかのファイルまたはディレクトリをキャッシュします。 この例では、package-lock.json のチェックサムをキャッシュキーとして使用して、node_modules をキャッシュします。

restore_cache ステップを使用して、キャッシュされたファイルまたはディレクトリを復元します。

    steps:

      - checkout
      - run:
          name: update-npm
          command: 'sudo npm install -g npm@latest'
      - restore_cache:
          key: dependency-cache-{{ checksum "package-lock.json" }}
      - run:
          name: install-npm-wee
          command: npm install
      - save_cache:
          key: dependency-cache-{{ checksum "package-lock.json" }}
          paths:
            - ./node_modules

依存関係がインストールされたので、テストスイートを実行し、テスト結果をアーティファクトとしてアップロードできます (CircleCI Web アプリで使用できるようになります)。

      - run:
          name: test
          command: npm test
      - run:
          name: code-coverage
          command: './node_modules/.bin/nyc report --reporter=text-lcov'
      - store_artifacts:
          path: test-results.xml
          prefix: tests
      - store_artifacts:
          path: coverage
          prefix: coverage
      - store_test_results:
          path: test-results.xml

完了です。 これで Node.js アプリケーション用に CircleCI 2.0 を設定できました。CircleCI でビルドを行うとどのように表示されるかについては、プロジェクトのジョブページを参照してください。

関連項目