CircleCI における設定例
CI 設定例-CircleCI
ここでは、CI 設定例として、CircleCI をご紹介します。
CircleCI について、詳しく知りたい方はこちらをご参照ください。
前提
- CircleCI のアカウント登録とリポジトリ登録は完了しているものとします。
- 本設定例における CircleCI のバージョンは 2.0 を想定しております。
- 本設定例では、yarn プロジェクトのスキャンを題材にしております。
- プロジェクトグループ識別キーには
yamory_scan_sample
を使用しております。参考にする際は適宜読み替えてください。 - コマンドラインスキャンの項より、実行するコマンドは事前に取得しておいてください。
- YAMORY_API_KEY の設定に CircleCI 上で、環境変数を使用しております。本設定例では設定方法を割愛しますので、CircleCI の環境変数の定義はこちらをご確認ください。
全体の流れ
本設定例では、リポジトリの develop ブランチにマージまたはコミットした際、yamory のコマンドラインスキャンを実行する方法を説明します。
- コマンドラインスキャンのコマンドを編集する。
- CircleCI の定義ファイルを準備する。
- 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 を組み込む設定は以上です。