我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

在容器中运行 CodeQL 代码扫描

通过确保所有进程都在同一容器中运行,您可以在容器中运行 代码扫描。

代码扫描 在您拥有 GitHub Advanced Security 的许可证时可用。

本文内容

注: 代码扫描 正在测试用于 GitHub Enterprise Server 2.22。 对于代码扫描的一般可用版本,请升级到最新版本的 GitHub Enterprise Server。

关于使用容器化构建的 代码扫描

如果为编译语言设置 代码扫描,并且在容器化环境中构建代码,则分析可能会失败,并返回错误消息“No source code was seen during the build(在构建过程中没有看到源代码)”。 这表明 CodeQL 在代码编译过程中无法监视代码。

您必须在构建代码的容器中运行 CodeQL。 这适用于您使用 CodeQL runner 或 GitHub Actions。 如果您使用 CodeQL runner,请在代码构建容器中运行它。 有关 CodeQL runner 的更多信息,请参阅“在 CI 系统中运行 CodeQL 代码扫描”。 如果您使用 GitHub Actions,请配置工作流程以在同一容器中运行所有操作。 更多信息请参阅“示例工作流程”。

依赖项

如果您使用的容器缺少某些依赖项(例如,Git 必须安装并添加到 PATH 变量),您可能难以运行 代码扫描。 如果遇到依赖项问题,请查看通常包含在 GitHub 虚拟环境中的软件列表。 有关更多信息,请在以下位置查看特定于版本的 readme 文件:

示例工作流程

此示例工作流程在容器化环境中使用 GitHub Actions 运行 CodeQL 分析。 container.image 的值标识要要使用的容器。 在此示例中,映像名称为 codeql-container,标记为 f0f91db。 更多信息请参阅“GitHub Actions 的工作流程语法”。

name: "CodeQL"

on: 
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    - cron: '45 15 * * 2'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest 

    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@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

此文档对您有帮助吗?

Privacy policy

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。