Skip to main content

Ejecutarel escaneo de código de CodeQL en un contenedor

Puede ejecutarse code scanning en un contenedor asegurándose de que todos los procesos se ejecutan en el mismo contenedor.

¿Quién puede utilizar esta característica?

Code scanning está disponible para los tipos de repositorio siguientes:

  • Repositorios públicos en GitHub.com
  • Repositorios propiedad de la organización en GitHub Team, GitHub Enterprise Cloud, o GitHub Enterprise Server, con GitHub Code Security habilitados.

Acerca de code scanning con una compilación en contenedor

Si está configurando code scanning para un lenguaje compilado y va a compilar el código en un entorno contenedorizado, el análisis puede producir un error con el mensaje de error "No se ha visto ningún código fuente durante la compilación". Esto indica que CodeQL no pudo supervisar el código a medida que se compiló.

Debes ejecutar CodeQL dentro del contenedor en el que compilas tu código. Esto se aplica tanto si usa CodeQL CLI como GitHub Actions. Para obtener más información sobre CodeQL CLI, consulte Utilizar el análisis de código de CodeQL con tu sistema de IC existente. Si usa GitHub Actions, configure el flujo de trabajo para ejecutar todas las acciones del mismo contenedor. Para obtener más información, consulte Flujo de trabajo de ejemplo.

Nota:

La CodeQL CLI no es compatible actualmente con distribuciones de Linux que no sean glibc, como Alpine Linux (basado en musl).

Dependencias para CodeQLcode scanning

Puede que tenga dificultades para ejecutar code scanning si al contenedor que está usando le faltan determinadas dependencias (por ejemplo, Git debe estar instalado y agregado a la variable PATH). Si encuentra problemas de dependencia, revise la lista del software que suele incluirse en las imágenes de ejecutor de GitHub. Para obtener más información, vea los archivos readme específicos de la versión en estas ubicaciones:

Flujo de trabajo de ejemplo

Este flujo de trabajo de ejemplo usa GitHub Actions para ejecutar CodeQL análisis en un entorno en contenedor. El valor de container.image identifica el contenedor que se va a usar. En este ejemplo, la imagen se denomina codeql-container, con una etiqueta de f0f91db. Para obtener más información, vea Sintaxis del flujo de trabajo para Acciones de GitHub.

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