Skip to main content

Ejecutarel escaneo de código de CodeQL en un contenedor

Puedes ejecutar el code scanning en un contenedor si garantizas que todos los procesos se ejecutan en el mismo contenedor.

Code scanning está disponible para repositorios que son propiedad de una organización en GitHub Enterprise Server. Esta característica requiere una licencia para la GitHub Advanced Security. Para más información, consulte "Acerca de GitHub Advanced Security".

Acerca del code scanning con una compilación en contenedor

Si estás configurando el code scanning para un lenguaje compilado, y estás compilando el código en un ambiente contenido, el análisis podría fallar con el mensaje de error "No source code was seen during the build". Esto indica que CodeQL no fue capaz de monitorear tu código mientras se compilaba.

Debes ejecutar a CodeQL dentro del mismo contenedor en el que compilaste tu código. Esto se aplica ya sea si usas CodeQL CLI o GitHub Actions. Para CodeQL CLI , consulta "Instalación de CodeQL CLI en el sistema de CI" para obtener más información. Si estás utilizando GitHub Actions, configura tu flujo de trabajo para ejecutar todas las acciones en el mismo contenedor. Para obtener más información, vea "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

Es posible que tengas alguna dificultad para ejecutar el code scanning si el contenedor que estás utilizando carece de ciertas dependencias (Por ejemplo, Git debe instalarse y agregarse a la variable PATH). Si te encuentras con algún problema en las dependencias, revisa la lista de software que habitualmente se incluye en las imágenes de ejecutores 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

Nota: En este artículo se describen las características disponibles con la versión de la acción CodeQL y el paquete CodeQL CLI asociado que se incluye en la versión inicial de esta versión de GitHub Enterprise Server. Si la empresa usa una versión más reciente de la acción CodeQL, vea el artículo sobre GitHub Enterprise Cloud para obtener información sobre las características más recientes. Para obtener información sobre el uso de la versión más reciente, vea "Configuración del examen de código para el dispositivo".

Este flujo de trabajo de muestra utiliza GitHub Actions para ejecutar un análisis de CodeQL en un ambiente contenido. 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 más información, vea "Sintaxis de flujo de trabajo para 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@v3
      - 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