Skip to main content

Exécution de l’analyse du code CodeQL dans un conteneur

Vous pouvez exécuter code scanning dans un conteneur en veillant à ce que tous les processus s’exécutent dans le même conteneur.

Code scanning est disponible pour les dépôts appartenant à l’organisation dans GitHub Enterprise Server. Cette fonctionnalité nécessite une licence pour GitHub Advanced Security. Pour plus d’informations, consultez « À propos de GitHub Advanced Security ».

À propos de l’code scanning avec une build conteneurisée

Si vous configurez l’code scanning pour un langage compilé et que vous générez le code dans un environnement conteneurisé, l’analyse peut échouer avec le message d’erreur « Aucun code source n’a été vu pendant la génération ». Cela indique que CodeQL n’a pas pu superviser votre code lors de sa compilation.

Vous devez exécuter CodeQL dans le conteneur dans lequel vous générez votre code. Cela s’applique que vous utilisiez CodeQL CLI ou GitHub Actions. Pour CodeQL CLI , consultez « Installation de CodeQL CLI dans votre système CI » pour plus d’informations. Si vous utilisez GitHub Actions, configurez votre workflow pour exécuter toutes les actions dans le même conteneur. Pour plus d’informations, consultez « Exemple de workflow ».

Remarque : CodeQL CLI n’est actuellement pas compatible avec les distributions Linux non-glibc comme Alpine Linux (basée sur musl).

Les dépendances

Vous pouvez avoir des difficultés à exécuter une code scanning si le conteneur que vous utilisez n’a pas certaines dépendances (par exemple, Git doit être installé et ajouté à la variable PATH). Si vous rencontrez des problèmes de dépendance, consultez la liste des logiciels généralement inclus dans les images d’exécuteur de GitHub. Pour plus d’informations, consultez les fichiers readme spécifiques à la version dans ces emplacements :

Exemple de flux de travail

Remarque : Cet article décrit les fonctionnalités disponibles avec la version de l’action CodeQL et le bundle de l’interface CLI de CodeQL associé inclus dans la mise en production initiale de cette version de GitHub Enterprise Server. Si votre entreprise utilise une version plus récente de l’action CodeQL, consultez l’article GitHub Enterprise Cloud pour plus d’informations sur les dernières fonctionnalités. Pour plus d’informations sur l’utilisation de la dernière version, consultez « Configuration de l’analyse du code pour votre appliance ».

Cet exemple de workflow utilise GitHub Actions pour exécuter l’analyse CodeQL dans un environnement conteneurisé. La valeur de container.image identifie le conteneur à utiliser. Dans cet exemple, l’image est nommée codeql-container et porte l’étiquette f0f91db. Pour plus d’informations, consultez « Syntaxe de workflow pour 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