Skip to main content

Cette version de GitHub Enterprise Server ne sera plus disponible le 2026-04-09. Aucune publication de correctifs n’est effectuée, même pour les problèmes de sécurité critiques. Pour de meilleures performances, une sécurité améliorée et de nouvelles fonctionnalités, effectuez une mise à niveau vers la dernière version de GitHub Enterprise. Pour obtenir de l’aide sur la mise à niveau, contactez le support GitHub Enterprise.

Publication et utilisation de packs CodeQL

Partagez ou téléchargez un CodeQL pack, puis analysez votre CodeQL base de données.

Qui peut utiliser cette fonctionnalité ?

CodeQL est disponible pour les types de référentiels suivants :

Utilisation des CodeQL packs sur GitHub Enterprise Server

Par défaut, CodeQL CLI s’attend à télécharger des packs à partir de CodeQL et à publier des packs sur GitHub.com le site Container registry. Toutefois, vous pouvez également utiliser des CodeQL paquets avec un fichier Container registryGitHub Enterprise Server en créant un fichier qlconfig.yml pour indiquer à l’interface en ligne de commande quel Container registry utiliser pour chaque paquet.

Créez un fichier ~/.codeql/qlconfig.yml sur Linux/MacOS ou %HOMEPATH%\.codeql\qlconfig.yml sur Windows à l’aide de votre éditeur de texte préféré, puis ajoutez des entrées pour spécifier le registre à utiliser pour un ou plusieurs modèles de nom de package. Par exemple, le fichier suivant qlconfig.yml associe tous les packs à Container registry, sauf ceux qui correspondent à codeql/\* ou à l'organisation other-org/*, qui sont associés avec Container registry sur GitHub.com.

registries:
- packages:
  - 'codeql/*'
  - 'other-org/*'
  # Container registry on GitHub.com
  url: https://ghcr.io/v2/
- packages: '*'
  # Container registry hosted at `https://GHE_HOSTNAME`
  url: https://containers.GHE_HOSTNAME/v2/

Le CodeQL CLI registre à utiliser pour un nom de package donné est déterminé en recherchant le premier élément de la registries liste avec une packages propriété qui correspond à ce nom de package. Cela signifie que vous allez généralement d’abord définir les modèles de nom de package les plus spécifiques. La propriété packages peut être un seul nom de package, un modèle Glob, ou une liste YAML de noms de package et de modèles Glob.

La liste registries peut également être placée dans un fichier codeql-workspace.yml. Cela vous permettra de définir les registres à utiliser dans un espace de travail spécifique afin qu’ils puissent être partagés entre d’autres CodeQL utilisateurs de l’espace de travail. La liste registries dans codeql-workspace.yml sera fusionnée avec la liste dans le qlconfig.yml global et aura priorité sur celle-ci. Pour plus d’informations sur codeql-workspace.yml, consultez À propos des espaces de travail CodeQL.

Vous pouvez désormais utiliser codeql pack publish, codeql pack downloadet codeql database analyze gérer les packs sur GitHub Enterprise Server.

Authentification à GitHubContainer registries

Vous pouvez publier des packs et télécharger des packs privés en s’authentifiant auprès des éléments appropriés GitHubContainer registry.

Authentification à Container registries sur GitHub.com

Vous pouvez vous authentifier avec le Container registry de deux manières :

  1. Transmettez l’option --github-auth-stdin à CodeQL CLI, puis fournissez un jeton GitHub Apps ou personal access token via l'entrée standard.
  2. Définissez la variable d’environnement GITHUB_TOKEN sur un jeton GitHub Apps ou personal access token.

Authentification sur Container registriesGitHub Enterprise Server

De même, vous pouvez vous authentifier auprès d’une Container registry instance sur GitHub Enterprise Serverou s’authentifier simultanément auprès de plusieurs registres (par exemple, pour télécharger ou exécuter des packs privés à partir de plusieurs registres) de deux manières :

  1. Transmettez l’option --registries-auth-stdin à l’instance CodeQL CLI, puis fournissez une chaîne d’authentification de Registre via une entrée standard.
  2. Définir la variable d’environnement CODEQL_REGISTRIES_AUTH sur une chaîne d’authentification de registre.

Une chaîne d’authentification de registre est une liste séparée par des virgules de <registry-url>=<token> paires, où registry-url est une Container registry URL, telle que https://containers.GHE_HOSTNAME/v2/, et token est un GitHub Apps jeton ou personal access token pour ce Container registry. Cela garantit que chaque jeton est transmis uniquement à l’utilisateur Container registry que vous spécifiez.

Par exemple, la chaîne d’authentification de Registre suivante spécifie que le CodeQL CLI registre doit s’authentifier comme suit :

  • Utilisez le jeton <token1> pour vous authentifier à Container registry sur GitHub.com.
  • Utilisez le jeton <token2> pour vous authentifier sur Container registry de l’entreprise à https://containers.GHE_HOSTNAME/v2/.
https://ghcr.io/v2/=<token1>,https://containers.GHE_HOSTNAME/v2/=<token2>

Publication de votre CodeQL pack

Pour partager votre CodeQL pack avec d’autres personnes, vous pouvez le publier sur le Container registry.

Configuration du fichier qlpack.yml avant la publication

Remarque

Cet article décrit les fonctionnalités disponibles avec le pack CodeQL CLI 2.18.4 inclus dans la mise en production initiale de GitHub Enterprise Server 3.15.

Si votre administrateur de site a mis à jour votre versionCodeQL CLI vers une version plus récente, consultez la version GitHub Enterprise Cloud de cet article pour obtenir plus d’informations sur les dernières fonctionnalités.

Vous pouvez vérifier et modifier les détails de configuration de votre CodeQL pack avant la publication. Ouvrez le fichier qlpack.yml dans l’éditeur de texte de votre choix.

library: # set to true if the pack is a library. Set to false or omit for a query pack
name: <scope>/<pack>
version: <x.x.x>
description: <Description to publish with the package>
defaultSuite: # optional, one or more queries in the pack to run by default
    - query: <relative-path>/query-file>.ql
defaultSuiteFile: default-queries.qls # optional, a pointer to a query-suite in this pack
license: # optional, the license under which the pack is published
dependencies: # map from CodeQL pack name to version range
  •         `name:` doit suivre le `<scope>/<pack>` format, où `<scope>` est l’organisation GitHub dans laquelle vous allez publier et `<pack>` est le nom du pack.
    
  • Un maximum d’une defaultSuite ou d’un defaultSuiteFile est autorisé. Il existe deux façons différentes de définir une suite de requêtes par défaut à exécuter : la première en spécifiant des requêtes directement dans le fichier qlpack.yml et la seconde en spécifiant une suite de requêtes dans le pack.

En cours d’exécution codeql pack publish

Lorsque vous êtes prêt à publier un pack sur celui-ci GitHubContainer registry, vous pouvez exécuter la commande suivante à la racine du répertoire du pack :

codeql pack publish

Le package publié s’affiche dans la section packages de l’organisation GitHub spécifiée par l’étendue du qlpack.yml fichier.

Remarque

Si vous publiez des packs de modèles dans le GitHubContainer registry afin d’étendre la couverture à tous les référentiels d’une organisation dans le cadre d’une configuration par défaut, vous devez vous assurer que les référentiels qui exécutent l’analyse du code peuvent accéder à ces packs de modèles. Pour plus d’informations, consultez « Modification de la configuration d’installation par défaut » et « Configuration du contrôle d’accès et de la visibilité d’un package ».

Téléchargement d’un pack existant CodeQL

Pour exécuter un pack créé par quelqu’un d’autre, vous devez d’abord le télécharger en exécutant la commande suivante :

codeql pack download <scope>/<pack>@x.x.x
  •         `<scope>`: nom de l’organisation GitHub à partir de laquelle vous allez télécharger.
    
  •         `<pack>` : nom du pack que vous voulez télécharger.
    
  •         `@x.x.x` : numéro de version facultatif. S’il est omis, c’est la dernière version qui est téléchargée.
    

Cette commande accepte des arguments pour plusieurs packs.

Si vous écrivez des scripts qui spécifient un numéro de version particulier d’un pack de requêtes à télécharger, gardez à l’esprit que lorsque vous mettez à jour votre version vers CodeQL une version plus récente, vous devrez peut-être également basculer vers une version plus récente du pack de requêtes. Les versions plus récentes CodeQL__ fournir des performances détériorées lorsqu’elles sont utilisées avec des packs de requêtes épinglés à une version très ancienne. Pour plus d’informations, consultez « Informations de référence sur les packs de requêtes CodeQL ».

Utilisation d’un CodeQL pack pour analyser une CodeQL base de données

Pour analyser une CodeQL base de données avec un CodeQL pack, exécutez la commande suivante :

codeql database analyze <database> <scope>/<pack>@x.x.x:<path>
  •         `<database>`: base CodeQL de données à analyser.
    
  •         `<scope>`: nom de l’organisation GitHub dans laquelle le pack est publié.
    
  •         `<pack>` : nom du pack que vous utilisez.
    
  •         `@x.x.x` : numéro de version facultatif. S’il est omis, c’est la dernière version qui est utilisée.
    
  •         `:<path>` : chemin facultatif d’une requête, d’un répertoire ou d’une suite de requêtes. S’il est omis, c’est la suite de requêtes par défaut du pack qui est utilisée.
    

La analyze commande exécute la suite par défaut de tous les packs spécifiés CodeQL . Vous pouvez spécifier plusieurs CodeQL packs à utiliser pour analyser une CodeQL base de données. Par exemple:

codeql <database> analyze <scope>/<pack> <scope>/<other-pack>

Remarque

La commande codeql pack download stocke le pack qu’elle télécharge à un emplacement interne qui n’est pas destiné à la modification locale. Un comportement inattendu (et difficile à résoudre) peut se produire si le pack est modifié après le téléchargement. Pour plus d'informations sur la personnalisation des packs, veuillez consulter la section Création et utilisation de packs CodeQL.