# Local Scannerを使用したBitbucketのPRゲーティング

Aikido Local Scannerを使用して、CIパイプラインでセキュリティゲートを適用できます。

{% hint style="info" %}
クラウド接続されたワークスペース（GitHub、BitBucketなど）でもPRゲーティングを使用できます。CIの[Integrationセクション](https://help.aikido.dev/section/ci-integrations/sg3q6UrIf4qE)をご覧ください。
{% endhint %}

PRゲーティングにより、新しいコードがデフォルトブランチにマージされる前に、セキュリティ基準を満たしていることが保証されます。スキャン対象は、プルリクエストで導入された変更のみです。設定した重大度のしきい値以上の新しい問題が検出された場合、CIパイプラインは失敗します。

これにより、既存の検出結果を別途対処しながら、新しい脆弱性の混入を防ぐことができます。

{% hint style="info" %}
リリース時にチェックを適用したいチーム向けに、[リリースゲーティング](https://help.aikidogov.us/docs/docs-ja/container-image-scanning/local-image-scanning/release-gating-for-container-images-using-local-image-scanner)もサポートしています。
{% endhint %}

PRゲーティングを有効にするには、`--fail-on <severity>` オプションを追加して希望する重大度レベルを選択します。次に、`--gating-mode pr` オプションを追加して、PRゲーティングを実行することを指定します。また、ベースコミット（`--base-commit-id <commit-id>`）とヘッドコミット（`--head-commit-id <commit-id>`）も指定する必要があります。ベースコミットIDに対して以前にスキャンが実行されている場合、スキャン結果はその結果と比較されます。そうでない場合は、デフォルトブランチでの最新のスキャン結果と比較されます。

Bitbucket環境でのLocal Scannerのセットアップに関する一般的な情報については、[こちらの記事](https://help.aikidogov.us/docs/docs-ja/code-scanning/local-code-scanning/bitbucket-pipeline-setup-for-local-code-scanning)をご覧ください。

PRゲーティング用の `bitbucket-pipelines.yml` の例：

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

pipelines:
  pull-requests:
    "**":   # this applies the pipeline to all pull requests
      - step:
          name: Aikido PR Gating Scan
          script:
            - >- 
              aikido-local-scanner scan ./
              --apikey $AIKIDO_API_KEY
              --repositoryname $BITBUCKET_REPO_SLUG
              --branchname $BITBUCKET_BRANCH
              --gating-mode pr
              --fail-on critical
              --base-commit-id $BITBUCKET_PR_DESTINATION_COMMIT
              --head-commit-id $BITBUCKET_COMMIT
```
