Skip to main content

Executar a varredura de código CodeQL em um contêiner

Você pode executar code scanning em um contêiner garantindo que todos os processos sejam executados no mesmo contêiner.

Quem pode usar esse recurso?

O Code scanning está disponível para os seguintes tipos de repositório:

  • Repositórios públicos no GitHub.com
  • Repositórios de propriedade da organização em GitHub Team, GitHub Enterprise Cloudou GitHub Enterprise Server, com GitHub Code Security habilitados.

Sobre code scanning uma compilação conteinerizada

Se você estiver configurando code scanning para um idioma compilado e estiver criando o código em um ambiente em contêineres, a análise poderá falhar com a mensagem de erro "Nenhum código-fonte foi visto durante o build". Isso indica que CodeQL não foi possível monitorar seu código como ele foi compilado.

Você deve executar CodeQL dentro do contêiner no qual compila o seu código. Isso se aplica se você estiver usando o CodeQL CLI ou GitHub Actions. Para o(a) CodeQL CLI, consulte Usando a varredura de código com seu sistema de CI existente para obter mais informações. Se você estiver usando GitHub Actions, configure seu fluxo de trabalho para executar todas as ações no mesmo contêiner. Para obter mais informações, confira Exemplo de fluxo de trabalho.

Observação

Atualmente, o CodeQL CLI não é compatível com distribuições Linux não glibc, como o Alpine Linux (baseado em musl).

Dependências para CodeQLcode scanning

Talvez você tenha dificuldade para executar code scanning se o contêiner que você está usando estiver faltando determinadas dependências (por exemplo, o Git deve ser instalado e adicionado à variável PATH). Se você encontrar problemas de dependência, examine a lista de softwares normalmente incluídos nas GitHubimagens do executor. Para obter mais informações, confira os arquivos readme específicos da versão nestes locais:

Fluxo de trabalho de exemplo

Este fluxo de trabalho de exemplo usa GitHub Actions para executar CodeQL a análise em um ambiente em contêineres. O valor de container.image identifica o contêiner a ser usado. Neste exemplo, a imagem é nomeada codeql-container, com uma tag de f0f91db. Para obter mais informações, consulte Sintaxe de fluxo de trabalho para o 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-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