コンテナ化されたビルドで code scanning を使用することについて
コンパイル言語用に code scanning をセットアップし、コンテナ化された環境でコードをビルドしようとすると、解析が失敗し、"No source code was seen during the build." というエラーメッセージが出る場合があります。 これは、コードがコンパイルされているので CodeQL がコードをモニターできなかったことを示しています。
CodeQLは、コードをビルドするコンテナ内で実行しなければなりません。 これは、CodeQL CLI、GitHub Actionsのいずれを使っていても当てはまります。 CodeQL CLIについては、詳しい情報は「CIシステムへのCodeQL CLIのインストール」を参照してください。 GitHub Actions を使用している場合は、同じコンテナですべてのアクションを実行するようワークフローを設定します。 詳しい情報については「ワークフローの例」を参照してください。
依存関係
使用しているコンテナで特定の依存関係がない場合 (たとえば、Git は PATH 変数にインストールされ、追加されている必要がある)、code scanning を実行する上で困難が生じる場合があります。 依存関係の問題が生じた場合は、GitHub の仮想環境に通常含まれているソフトウェアのリストを確認してください。 詳しい情報については、次の場所にある特定のバージョンの readme
ファイルを参照してください。
- Linux: https://github.com/actions/virtual-environments/tree/main/images/linux
- macOS: https://github.com/actions/virtual-environments/tree/main/images/macos
- Windows: https://github.com/actions/virtual-environments/tree/main/images/win
ワークフローの例
ノート: この記事は、GitHub Enterprise Serverのこのバージョンにおける初期リリースに含まれる、このバージョンのCodeQLアクション及び関連するCodeQL CLIバンドルで利用できる機能について説明しています。 Enterpriseでさらに最近のバージョンのCodeQLアクションを使っているなら、最新機能に関する情報についてはGitHub Enterprise Cloudの記事を参照してください。最新バージョンの利用に関する情報については「アプライアンスでのCode scanningの設定」を参照してください。
このサンプルワークフローでは、GitHub Actions を使用して、コンテナ化された環境において CodeQL 解析を実行します。 container.image
の値で、使用するコンテナを指定します。 この例では、イメージ名は codeql-container
で、f0f91db
のタグが付いています。 詳しい情報については、「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]
# アクションが実行されるコンテナを指定
container:
image: codeql-container:f0f91db
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
- name: Build
run: |
./configure
make
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1