Circle CI 向け導入ガイド

技術サポートが必要ですか?   導入支援のご依頼・ご相談       

1. 事前準備

アーティファクト保存と取得のために必要な、パーソナル APIトークンを環境変数に登録します。まず、CircleCI の サイドメニューから”Projects” を選択し、Sider Scan を適用したいプロジェクトの”Project Settings” を開きます。

サイドメニューの”API Permissions” からトークンを発行し、” Environment Variables” で、新規環境変数として登録します。ここでは、”Name” を CIRCLE_TOKENとします。

次に、アーティファクトのURLを取得するために、プロジェクト番号が必要となります。このプロジェクト番号は、設定画面等で確認する方法がありません。そこで、対象のプロジェクトで、なんらかのアーティファクトを生成するサンプルJob を実行し、そのアーティファクトのURL を確認します。サンプルJob の一例としては、Circle CIのこちらのドキュメントを参照ください。下図のように、output.radump の URL を調べます。

例えば、下図のように、アーティファクトのファイル名がoutput.radump だったとします。このファイルのURL を表示した際の、 “-” で区切られた数字の内、最初から2つ目(赤枠で囲った部分)の数字がプロジェクト番号となります。この番号は、次に説明するYMLファイルの中で使用します。

2. YMLファイルの配置

リポジトリのルートから .circleci/config.yml にファイルを置くことでCIの設定ができます。config.yml は以下を参考にしてください。

ユーザーの環境に合わせて編集すべき行が3箇所あります。

7行目: 前回の解析結果を取得するためのURLを指定している行です。GitHub + CircleCI の組み合わせで使用していることを前提にしていますので、GitLab やBitbacket など他のリポジトリ管理ツールを使用している場合は適宜編集下さい。

28行目: “プロジェクト番号”の文字列を「事前準備」で取得したプロジェクト番号に置き換えてください

41行目: yourname@example.com の文字列を、解析結果のレポートの送付先E-mail アドレスに置き換えてください

以上により設定が終わりました。Circle CI がビルドジョブを実行するたびに、Sider Scanが対象のリポジトリのソースコードを解析します。

なお、下記の設定では解析結果は CircleCI 内のアーティファクトに保存されます。 CircleCI 内のアーティファクト は30日後には削除されるのでご注意ください。長期的に解析結果を保存したい方は、AWS S3 などの検討をお勧めします。

version: 2.1
jobs:
  siderscan:
    docker:
      - image: sider/sider_scan_runner:latest
    environment:
      - API_BASE_URL: https://circleci.com/api/v1.1/project/github
      - PROJECT_NAME: ${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}
    steps:
      - checkout
      - run: RADUMP_URL=${API_BASE_URL}/${PROJECT_NAME}/${CIRCLE_PREVIOUS_BUILD_NUM}/artifacts
      - run: |
          wget --header "Circle-Token: ${CIRCLE_TOKEN}" ${RADUMP_URL} -O - \
          | grep -o 'https://[^"]*' \
          | wget -P ./ --verbose --header "Circle-Token: ${CIRCLE_TOKEN}" --input-file - || true
      - run: |
          if [ ! -e .siderscan.json ]; then
            cat - << 'JSON' >> .siderscan.json
          {
            "report": {
              "mail": {
                "to": ["${SIDERSCAN_MAIL_TO}"],
                "useBuiltInProvider": true
              }
            },
            "scan": {
              "result": {
                "url": "https://${CIRCLE_BUILD_NUM}-プロジェクト番号-gh.circle-artifacts.com/0/"
              }
            },
            "enableSiderScanTracing": {
              "userEmail": "${SIDERSCAN_MAIL_TO}"
            }
          }
          JSON
            echo 'CREATED .siderscan.json'
          fi
      - run:
          command: tmpscanjson=$(mktemp) && envsubst < .siderscan.json > "$tmpscanjson" && mv "$tmpscanjson" .siderscan.json
          enviroment:
            SIDERSCAN_MAIL_TO: yourname@example.com
      - run: sider run ./
      - store_artifacts:
          path: ./output.radump
      - store_artifacts:
          path: ./scan_result/
      
workflows:
  version: 2
  scans:
    jobs:
      - siderscan

3. 設定の詳細について

Sider Scan の設定は、.siderscan.json というファイルに記載されるのですが、上記のサンプルでは、その.siderscan.json というJSON形式のファイルをYML ファイルの中で自動生成しています。.siderscan.json を別途作成して保存することもできます。また、.siderscan.json で設定できるオプションの詳細については、

Sider Scan の高度な設定
Sider Scan 設定リファレンスガイド

などを参照下さい。