# コンテナで CodeQL Code scanningを実行する

すべてのプロセスが同じコンテナーで実行されるようにすることで、コンテナーで code scanning を実行できます。

## コンテナー化されたビルドを使用した code scanning について

コンパイル済み言語の code scanning を構成していて、コンテナー化された環境でコードをビルドしている場合、"ビルド中にソース コードが表示されませんでした" というエラー メッセージで分析が失敗することがあります。 これは、コンパイル時 CodeQL コードを監視できなかったことを示します。

コードをビルドするコンテナー内で CodeQL を実行する必要があります。 これは、 CodeQL CLI と GitHub Actionsのどちらを使用しているかに関係なく適用されます。
CodeQL CLIについては、[既存の CI システムでコード スキャンを使用する](/ja/enterprise-server@3.20/code-security/code-scanning/integrating-with-code-scanning/using-code-scanning-with-your-existing-ci-system) を参照してください。
GitHub Actionsを使用している場合は、同じコンテナー内のすべてのアクションを実行するようにワークフローを構成します。 詳細については、「[ワークフローの例](#example-workflow)」を参照してください。

> \[!NOTE]
> CodeQL CLI は現在、glibc 以外の Linux ディストリビューション ((musl ベースの) Alpine Linux など) との互換性がありません。

## の依存関係 CodeQLcode scanning

使用しているコンテナーに特定の依存関係がない場合(たとえば、Git をインストールして PATH 変数に追加する必要がある)、 code scanning の実行が困難な場合があります。 依存関係の問題が発生した場合は、 GitHubのランナー イメージに通常含まれるソフトウェアの一覧を確認します。 詳しくは、次の場所にある特定のバージョンの `readme` ファイルをご覧ください。

* Linux： <https://github.com/actions/runner-images/tree/main/images/ubuntu>
* Macos： <https://github.com/actions/runner-images/tree/main/images/macos>
* ウィンドウズ： <https://github.com/actions/runner-images/tree/main/images/windows>

## ワークフローの例

> \[!NOTE]
> この記事では、このバージョンの CodeQL の初期リリースに含まれる CodeQL CLI アクションのバージョンおよび関連する GitHub Enterprise Server バンドルで使用できる機能について説明します。 エンタープライズでより新しいバージョンの CodeQL アクションを使用する場合は、この記事の [GitHub Enterprise Cloud バージョン](/ja/enterprise-cloud@latest/code-security/tutorials/customize-code-scanning/run-in-a-container)で最新の機能に関する情報を参照してください。
> 最新バージョンの使用方法については、「[アプライアンスのコード スキャンの構成](/ja/enterprise-server@3.20/admin/code-security/managing-github-advanced-security-for-your-enterprise/configuring-code-scanning-for-your-appliance#configuring-codeql-analysis-on-a-server-without-internet-access)」を参照してください。

このサンプル ワークフローでは、 GitHub Actions を使用して、コンテナー化された環境で CodeQL 分析を実行します。 使用するコンテナーを識別する `container.image` の値。 この例では、イメージは、`codeql-container` のタグを持つ、`f0f91db` という名前です。 詳細については、「[GitHub Actions　のワークフロー構文](/ja/enterprise-server@3.20/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontainer)」を参照してください。

```yaml
name: "CodeQL"

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    - cron: '15 5 * * 3'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      security-events: write
      actions: read

    strategy:
      fail-fast: false
      matrix:
        language: [java-kotlin]

    # Specify the container in which actions will run
    container:
      image: codeql-container:f0f91db

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v4
        with:
          languages: ${{ matrix.language }}
      - name: Build
        run: |
          ./configure
          make
      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v4
```