CI 設定例-CircleCI

ここでは、CI 設定例として、CircleCI をご紹介します。

CircleCI について、詳しく知りたい方はこちらをご参照ください。

前提

  • CircleCI のアカウント登録とリポジトリ登録は完了しているものとします。
  • 本設定例における CircleCI のバージョンは2.0を想定しております。
  • 本設定例では、yarn プロジェクトのスキャンを題材にしております。
  • プロジェクトグループ識別キーには yamory_scan_sample を使用しております。参考にする際は適宜読み替えてください。
  • コマンドラインスキャンの項より YAMORY_API_KEY は事前に取得しておいてください。
  • YAMORY_API_KEY の設定に CircleCI 上で、環境変数を使用しております。本設定例では設定方法を割愛しますので、CircleCI の環境変数の定義はこちらをご確認ください。

全体の流れ

本設定例では、リポジトリの develop ブランチにマージまたはコミットした際、yamory のコマンドラインスキャンを実行する方法を説明します。

  1. コマンドラインスキャンのコマンドを編集する。
  2. CircleCI の定義ファイルを準備する。
  3. develop ブランチにマージまたはコミットする。

コマンドラインスキャンのコマンドを編集する。

CircleCI の環境変数を利用するため、コマンドラインスキャンのコマンドから YAMORY_API_KEY を取り除きます。

編集前

PROJECT_GROUP_KEY=yamory_scan_sample YAMORY_API_KEY=xxxxxxxxxxxxxxxxx bash -c "$(curl -sSf -L https://localscanner.yamory.io/script/yarn)"

編集後

PROJECT_GROUP_KEY=yamory_scan_sample bash -c "$(curl -sSf -L https://localscanner.yamory.io/script/yarn)"

CircleCI の定義ファイルを準備する

CircleCI では、リポジトリのルートディレクトリに .circleci/config.yml を追加します。そして、以下の内容を追記してください。

.circleci/config.yml

version: 2
jobs:
  build:
    docker:
      - image: circleci/node:7.10
    working_directory: ~/repo
    steps:
      - checkout
      - run:
          name: execute yamory
          command: |
            # 編集したコマンドラインスキャンのコマンドを貼り付ける。
            PROJECT_GROUP_KEY=yamory_scan_sample bash -c "$(curl -sSf -L https://localscanner.yamory.io/script/yarn)" > /tmp/yamory_scan_result
            IMMEDIATE_VULNERABILITIES=$(cat /tmp/yamory_scan_result | grep '^I:[0-9]\{1,\}$' | cut -d ':' -f 2)
            if [ "${IMMEDIATE_VULNERABILITIES}" = "0" ]; then
              echo "No immediate vulnerabilities found."
              exit 0
            else
              echo "${IMMEDIATE_VULNERABILITIES} immediate vulnerabilities found."
              exit 1
            fi
workflows:
  version: 2
  scan-vulnerabilities:
    jobs:
      - build:
          filters:
            branches:
              only:
                - develop
⚠️ :既に存在する場合は、既存の設定を上書きしないように注意してください。

develop ブランチにマージまたはコミットする

上記の編集内容を develop ブランチにマージまたはコミットしてください。CircleCI のダッシュボードを確認すると、workflow からyamory のスキャンが実行されていることがわかります。

CircleCI に yamory を組み込む設定は以上です。