# ローカルコードスキャンのためのBitbucket Pipelineセットアップ

Aikido Security Local Scannerは、お使いの環境内でAikido Securityのスキャンを実行できるツールで、コードが社外に出ることはありません。スキャンはローカルで実行され、その結果がAikido Securityプラットフォームにアップロードされます。このセットアップにより、レポート作成を目的として、Local ScannerをBitbucketプロジェクトに簡単に統合できます。

## Local Scanningのセットアップ方法 <a href="#how-to-set-up-local-scanning" id="how-to-set-up-local-scanning"></a>

**前提条件**：Local Scanningが利用可能なアカウントを作成済みであることを確認してください。[Local Scanningアカウントの作成に関する詳細情報](https://help.aikido.dev/code-scanning/local-code-scanning/account-creation-for-local-scanning-on-aikido)。

## 1. 認証トークンを取得する <a href="#id-1-get-your-authentication-token" id="id-1-get-your-authentication-token"></a>

1. [Local Scannerセットアップページ](https://app.aikido.dev/settings/integrations/localscan)に移動します。
2. 認証トークンを生成してコピーします。このトークンは一度しか表示されないことに注意してください。
3. パイプラインで使用できるように、認証トークンをBitbucketのRepository variablesに追加します。これを行うには、Repository Settingsに移動します。次に、**Pipelines > Repository variables**に移動します。そこで、キーに`AIKIDO_API_KEY`、値にコピーしたトークンの内容を指定して認証トークンを追加できます。

## 2. Local Scannerを実行する <a href="#id-2-running-the-local-scanner" id="id-2-running-the-local-scanner"></a>

Local Scannerがデフォルトブランチでのみトリガーされるようにしてください。デフォルトでは、Aikidoはリポジトリ内の1つのブランチ（通常はmainまたはmasterブランチ）に対して、依存関係とコードの問題のスキャンをサポートしています。そのため、Aikidoプラットフォーム上でスキャン結果が混在しないよう、Local Scannerはそのブランチでのみ実行することを推奨します。

### Dockerを使用する <a href="#using-docker" id="using-docker"></a>

Bitbucket PipelinesでLocal Scannerを使用する最も簡単な方法は、Dockerイメージを使用することです。\
​\
`bitbucket-pipelines.yml`の例：

```yaml
image: aikidosecurity/local-scanner:latest

pipelines:
  branches:
    main:
      - step:
          name: Run Aikido scan
          script:
            - aikido-local-scanner scan . --repositoryname my-bitbucket-app --branchname main --apikey $AIKIDO_API_KEY
```

コマンドを実行する際に、`--branchname`オプションを使用して対象のブランチを指定してください。

このリポジトリに対する初回のスキャンの場合、Aikidoは指定した名前でリポジトリを作成し、すべてのスキャン結果をそこに格納します。以降のスキャン結果は、Aikido内のこのリポジトリ名の下に集約されます。

デフォルトではすべてのスキャンタイプが実行されます。一部のスキャンのみ（例：SASTスキャンのみ）を実行したい場合は、`--scan-types`オプションでスキャンタイプを指定できます。CLIオプションの詳細については[こちら](https://help.aikido.dev/code-scanning/local-code-scanning/cli-options-for-local-scanner)をご覧ください。

スキャナーをリリースゲーティングモードまたはPRゲーティングモードで実行することもできます。リリースゲーティングモードは、リリース前にリポジトリをスキャンする際に役立ち、リリース前に未解決の問題がないことを確認できます。リリースゲーティングモードで実行すると、スキャン完了後に選択した重大度以上の未解決の問題がある場合、スキャナーのプロセスは失敗します。PRゲーティングモードは、PRで新たに混入した可能性のある問題をスキャンするために使用できます。

リリースゲーティングモードまたはPRゲーティングモードの詳細については、[こちらの記事](https://help.aikido.dev/docs/docs-ja/code-scanning/local-code-scanning/pr-gating-for-code-using-local-scanner)をご覧ください。

## 3. スキャン結果を確認する <a href="#id-3-check-your-scanning-results" id="id-3-check-your-scanning-results"></a>

最初のスキャンが完了したら、Aikido Feedに移動して結果を確認できます。指定した名前のリポジトリが作成されており、スキャンのすべての結果が含まれています。
