Skip to main content

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

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

この機能を使用できるユーザーについて

Code scanning は、GitHub Enterprise Server の Organization 所有のリポジトリで利用できます。 この機能には、GitHub Advanced Security のライセンスが必要です。 詳しくは、「GitHub Advanced Security について」を参照してください。

コンテナ化されたビルドで code scanning を使用することについて

コンパイル言語用に code scanning を構成し、コンテナー化された環境でコードをビルドしようとすると、解析が失敗し、"No source code was seen during the build." というエラー メッセージが表示される場合があります。 これは、コードがコンパイルされているので CodeQL がコードをモニターできなかったことを示しています。

CodeQLは、コードをビルドするコンテナ内で実行しなければなりません。 これは、使用しているのが CodeQL CLI であれ GitHub Actions であれ同様です。 CodeQL CLI の詳細については、「既存の CI システムでコード スキャンを使用する」を参照してください。 GitHub Actions を使用している場合は、同じコンテナですべてのアクションを実行するようワークフローを設定します。 詳しくは、「ワークフローの例」をご覧ください。

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

CodeQL code scanning の依存関係

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

ワークフローの例

メモ: この記事では、このバージョンの GitHub Enterprise Server の初期リリースに含まれる CodeQL アクションのバージョンおよび関連する CodeQL CLI バンドルで使用できる機能について説明します。 エンタープライズでより新しいバージョンの CodeQL アクションを使用する場合は、この記事の GitHub Enterprise Cloud バージョンで最新の機能に関する情報を参照してください。 最新バージョンの使用については、「アプライアンス用コードスキャンの構成」を参照してください。

このサンプルワークフローでは、GitHub Actions を使用して、コンテナ化された環境において CodeQL 解析を実行します。 使用するコンテナーを識別する container.image の値。 この例では、イメージは、f0f91db のタグを持つ、codeql-container という名前です。 詳しくは、「GitHub Actions のワークフロー構文」を参照してください。

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]

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

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