yamory の使い方

yamory へようこそ! yamory の基礎知識と使い方をご紹介します。

CircleCI における設定例

CI 設定例-CircleCI

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

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

前提

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

全体の流れ

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

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

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

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

編集するスキャンコマンドはパッケージ管理システム毎に違います。事前に確認、取得しておいてください。

npm, Yarn, RubyGems, Composer など、スクリプト系言語のコマンド編集例

編集前
PROJECT_GROUP_KEY=yamory_scan_sample YAMORY_API_KEY=xxxxxxxxxxxxxxxxx bash -c "$(curl -sSf -L https://yamory/script/...)"
編集後
PROJECT_GROUP_KEY=yamory_scan_sample bash -c "$(curl -sSf -L https://yamory/script/...)"

Gradle のコマンド編集例

編集前
gradle :<Gradle のサブプロジェクト名>:dependencies --console=plain | PROJECT_GROUP_KEY=yamory_scan_sample YAMORY_API_KEY=xxxxxxxxxxxxxxxxx bash -c "$(curl -sSf -L https://yamory/script/...)"
編集後
gradle :<Gradle のサブプロジェクト名>:dependencies --console=plain | PROJECT_GROUP_KEY=yamory_scan_sample bash -c "$(curl -sSf -L https://yamory/script/...)"

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: |
            # > /tmp/yamory_scan_resultより前の部分を、編集したスキャンコマンドで置き換えてください。
            PROJECT_GROUP_KEY=yamory_scan_sample bash -c "$(curl -sSf -L https://yamory/script/...)" > /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 を組み込む設定は以上です。