Skip to main content

ビルドパイプラインでのインテグレーション

Contrast CLI には、Contrast Webインターフェイスを使用せずにスキャンを実行できるコマンドがあります。

本項では、Contrast CLIを使用してビルドパイプラインにスキャンを組み込む手順について説明します。

Contrast Mavenプラグインを使用して、プロジェクトのMavenビルドにContrast Scanを組み込むこともできます。

開始する前に

  • Contrast Webインターフェイスのユーザメニューよりユーザの設定 > プロファイルを選択し、以下の情報を取得してください。

    • APIキー

    • 組織ID

    • Contrast URL

    • 認証ヘッダー

  • WARファイルまたはJARファイルがアクセス可能な場所にあることを確認してください。

手順

  1. お使いのビルドパイプラインのワークフローに、最新バージョンのContrast CLIをダウンロードするコマンドを追加します。

    npm install --location=global @contrast/contrast@2
  2. APIキー、組織ID、Contrast URL、認証ヘッダーの環境変数を設定します。

    以下は、GitHubのシークレットを使用して環境変数を設定する例です。ご利用の環境に適した方法をご使用ください。

    CT_API_KEY: ${{ secrets.CONTRAST__API__API_KEY }}
    CT_AUTH_TOKEN: ${{ secrets.CONTRAST__API__AUTH_TOKEN }}
    ORG_ID: ${{ secrets.CONTRAST__API__ORGANIZATION_ID }}
    URL: ${{ secrets.CONTRAST__API__URL }}
  3. スキャンを開始するために、以下のようなコマンドを追加します。

    contrast --scan ../scan-cli-testing/java/apps/param.war \
    --api_key $CT_API_KEY \
    --authorization $CT_AUTH_TOKEN \
    --organization_id $ORG_ID \
    --host $URL \
    --project_name MY-Project \
    --language JAVA --wait_for_scan

    このコマンドを初めて実行すると、--project_nameオプションで指定した名前でプロジェクトが作成されます。

    コマンドの出力は、次のサンプルのようになります。

    project created ID is 788f9734-b933-4f05-b391-c130931baf88
     Uploaded file successfully.
     Response:  {
      id: '5091d134-93ea-4873-8110-8cf99d14606e',
      organizationId: '74f4cd04-6ca9-4eb7-a7a7-78909c2101cc',
      projectId: '788f9734-b933-4f05-b391-c130931baf88',
      filename: 'param.war',
      createdTime: '2022-04-04T10:06:16.952+00:00'
    }
    Timeout set to 5 minutes
    Waiting for results...
    New Results:  5
    Fixed Results: 0
    Total Results:  5

    次回、同じプロジェクトに対してこのコマンドを実行すると、アップロードするファイルがそのプロジェクトに追加されます。コマンドの出力は、次のサンプルのようになります。

    project already exists with this name. Getting ID...
     project ID is 788f9734-b933-4f05-b391-c130931baf88
     Uploaded file successfully.
     Response:  {
      id: '94b4e065-0e0f-46bb-b1d8-9f85bd03c602',
      organizationId: '74f4cd04-6ca9-4eb7-a7a7-78909c2101cc',
      projectId: '788f9734-b933-4f05-b391-c130931baf88',
      filename: 'param.war',
      createdTime: '2022-04-04T10:07:01.230+00:00'
    }
    Timeout set to 5 minutes
    Waiting for results...
    New Results:  5
    Fixed Results: 0
    Total Results:  5
  4. スキャン完了後、Contrast Webインターフェースにスキャンプロジェクトの詳細と結果が表示されます。

    ScanAfterCLI.png

インテグレーションの例