# ローカルスキャナーを使ったコードのリリースゲーティング

Aikido Local Scanner は、プルリクエストやリリースを含む CI パイプラインのさまざまな段階でセキュリティゲートを強制できます。

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

リリースゲーティングは、コードが公開またはデプロイされる前にスキャンします。～とは異なり [PRゲーティング](https://help.aikidogov.us/docs/docs-ja/container-image-scanning/local-image-scanning/pr-gating-for-container-images-using-local-image-scanner)、プルリクエストで導入された変更のみをスキャンするのに対し、リリースゲーティングはビルド全体を評価します。スキャンで設定した重大度しきい値に達する、またはそれを超える問題が見つかった場合、CI パイプラインは失敗し、リリースはブロックされます。

これにより、最終コードが本番環境に到達する前に、セキュリティ基準を満たしていることが保証されます。

リリースゲーティングを有効にするには、次を追加します。 `--fail-on <severity>` オプションを scan コマンドに追加します。

`aikido-local-scanner scan ./ --apikey $AIKIDO_LOCAL_SCANNER_TOKEN --repositoryname $CI_PROJECT_NAME --branchname main --fail-on critical`

## 例 <a href="#examples" id="examples"></a>

### GitLab セルフマネージド <a href="#gitlab-self-managed" id="gitlab-self-managed"></a>

GitLab 環境で Local Scanner をセットアップするための一般的な情報については、次を参照してください。 [この記事](https://help.aikidogov.us/docs/docs-ja/code-scanning/local-code-scanning/gitlab-self-managed-setup-for-local-code-scanning).

例 `.gitlab-ci.yml` リリースゲーティング用:

```yaml
default:
  image:
    name: aikidosecurity/local-scanner:latest
    entrypoint: [""]

run_aikido_selfscanner:
  script:
  - aikido-local-scanner scan ./ --apikey $AIKIDO_LOCAL_SCANNER_TOKEN --repositoryname $CI_PROJECT_NAME --branchname main --fail-on critical
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
```

### GitHub <a href="#github" id="github"></a>

GitHub環境で Local Scanner をセットアップするための一般的な情報については、こちらをご覧ください [この記事](https://help.aikidogov.us/docs/docs-ja/code-scanning/local-code-scanning/github-action-setup-for-local-code-scanning)。\
例 `.github/workflows/aikido-scan.yml` リリースゲーティング用:

```yaml
on:
  push:
    branches:
      - main

name: Aikido Scan
jobs:
  aikido-local-scan-repo:
    runs-on: ubuntu-latest
    container:
      image: aikidosecurity/local-scanner:latest
    steps: 
      - uses: actions/checkout@v4 
        with: 
          token: ${{ secrets.GITHUB_TOKEN }} 
          path: my-repo 
      - name: Run scan
        run: aikido-local-scanner scan my-repo --apikey ${{ secrets.AIKIDO_API_KEY }} --repositoryname MyRepo --branchname main --fail-on critical
```
