Skip to main content

Introduction aux packages GitHub

GitHub Packages est un service d’hébergement de package logiciel qui vous permet d’héberger vos packages logiciels en privé ou publiquement, ainsi que d’utiliser des packages en tant que dépendances dans vos projets.

Qui peut utiliser cette fonctionnalité ?

GitHub Packages est disponible avec GitHub Free, GitHub Pro, GitHub Free pour les organisations, GitHub Team, GitHub Enterprise Cloud et GitHub Enterprise Server 3.0 ou ultérieur.
GitHub Packages n’est pas disponible pour les référentiels privés appartenant à des comptes qui utilisent des plans par référentiel hérités. En outre, les comptes utilisant des plans hérités par référentiel ne peuvent pas accéder aux registres qui prennent en charge les autorisations granulaires, car ces comptes sont facturés par référentiel. Enterprise Managed Users n’ont pas d’allocation de stockage individuelle pour publier des packages dans l’espace de noms de leur compte, mais peuvent publier dans l’espace de noms d’une organisation. Pour plus d’informations sur Enterprise Managed Users, consultez « À propos d’Enterprise Managed Users ». Pour obtenir la liste des registres qui prennent en charge les autorisations granulaires, consultez « À propos des autorisations pour les packages GitHub. » Pour plus d’informations, consultez « Plans de GitHub ».

À propos de GitHub Packages

GitHub Packages est une plateforme pour l’hébergement et la gestion des packages, y compris les conteneurs et d’autres dépendances. GitHub Packages combine votre code source et vos packages à un emplacement unique pour intégrer la gestion des autorisations et la facturation, et ainsi vous permettre de centraliser votre développement logiciel sur GitHub Enterprise Cloud.

Vous pouvez intégrer GitHub Packages aux API GitHub, à GitHub Actions et aux webhooks pour créer un workflow DevOps de bout en bout qui inclut vos code, CI et solutions de déploiement.

GitHub Packages offre différents registres de packages pour les gestionnaires de packages couramment utilisés, comme npm, RubyGems, Apache Maven, Gradle, Docker et NuGet. Le Container registry de GitHub est optimisé pour les conteneurs et prend en charge les images Docker et OCI. Pour plus d’informations sur les différents registres de packages pris en charge par GitHub Packages, consultez « Utilisation d’un registre GitHub Packages ».

Vous pouvez afficher le fichier LISEZMOI d’un package ainsi que les métadonnées telles que les licences, les statistiques de téléchargement, l’historique des versions, etc. sur GitHub Enterprise Cloud. Pour plus d’informations, consultez « Affichage de packages ».

Vue d’ensemble des autorisations d’un package

Les autorisations d’un package sont héritées du dépôt dans lequel le package est hébergé, ou peuvent être définies pour des utilisateurs ou des organisations spécifiques. Certains registres prennent uniquement en charge les autorisations héritées d’un dépôt. Pour obtenir la liste de ces registres, consultez « À propos des autorisations pour les packages GitHub ». Pour plus d’informations sur l’accès aux packages, consultez « Configuration du contrôle d’accès et de la visibilité d’un package ».

Vue d’ensemble de la visibilité d’un package

Vous pouvez publier des packages dans un référentiel public (packages publics) à partager avec tout GitHub, ou dans un référentiel privé (packages privés) à partager avec des collaborateurs ou une organisation.

À propos de la facturation pour GitHub Packages

L’utilisation de GitHub Packages est gratuite pour les packages publics. Pour les packages privés, chaque compte sur GitHub reçoit une certaine quantité de stockage et de transfert de données gratuits, en fonction du plan du compte. Toute utilisation au-delà des montants inclus est contrôlée par des limites de dépense. Si vous êtes facturé tous les mois, votre compte a une limite de dépense par défaut de 0 USD, ce qui empêche toute utilisation supplémentaire de stockage ou de transfert de données une fois que vous avez atteint les montants inclus. Si vous payez votre compte par facture, votre compte aura une limite de dépense par défaut illimitée. Pour plus d’informations, consultez « À propos de la facturation pour GitHub Packages ».

Clients et formats pris en charge

GitHub Packages utilise les commandes d’outils de package natif que vous connaissez déjà pour publier et installer des versions de package.

Prise en charge des registres de packages

LangageDescriptionFormat du packageClient de package
JavaScriptGestionnaire de package de nœudpackage.jsonnpm
RubyGestionnaire de package RubyGemsGemfilegem
JavaOutil de gestion de projets et d’inclusion Apache Mavenpom.xmlmvn
JavaOutil d’automatisation de génération Gradle pour Javabuild.gradle ou build.gradle.ktsgradle
.NETGestion des packages NuGet pour .NETnupkgdotnet CLI
N/AGestion des conteneurs DockerDockerfileDocker

Note

Les registres Apache Maven et Gradle ne sont pas disponibles pour GitHub Enterprise Cloud avec résidence des données.

Pour plus d’informations sur la configuration de votre client de package à utiliser avec GitHub Packages, consultez « Utilisation d’un registre GitHub Packages ».

Pour plus d’informations sur Docker et le Container registry, consultez « Utilisation du registre de conteneurs ».

Authentification auprès de GitHub Packages

GitHub Packages prend uniquement en charge l’authentification à l’aide d’un personal access token (classic). Pour plus d’informations, consultez « Gestion de vos jetons d'accès personnels ».

Vous avez besoin d’un jeton d’accès pour publier, installer et supprimer des packages privés, internes et publics.

Vous pouvez utiliser un personal access token (classic) pour vous authentifier sur GitHub Packages ou l’API GitHub. Quand vous créez un personal access token (classic), vous pouvez l’attribuer à différentes étendues selon vos besoins. Pour plus d’informations sur les étendues liées aux packages pour un personal access token (classic), consultez « À propos des autorisations pour les packages GitHub ».

Pour vous authentifier sur un registre GitHub Packages dans un workflow GitHub Actions, vous pouvez utiliser :

  • GITHUB_TOKEN pour publier des packages associés au dépôt du workflow.
  • un personal access token (classic) avec au moins l’étendue read:packages pour installer des packages associés à d’autres dépôts privés (auxquels GITHUB_TOKEN ne peut pas accéder).

Pour plus d’informations sur GITHUB_TOKEN utilisé dans les workflows GitHub Actions, consultez « Authentification par jeton automatique ».

Gérer les packages

Vous pouvez supprimer un package dans l’interface utilisateur GitHub Enterprise Cloud ou en utilisant l’API REST. Pour plus d’informations, consultez « Suppression et restauration d'un package » et « Points de terminaison d’API REST pour les packages ». Pour certains registres, vous pouvez utiliser GraphQL pour supprimer une version d’un package privé.

Vous ne pouvez pas utiliser l’API GraphQL GitHub Packages avec des registres qui prennent en charge les autorisations granulaires. Pour les registres qui prennent uniquement en charge les autorisations limitées au dépôt et qui peuvent être utilisés avec l’API GraphQL, consultez « À propos des autorisations pour les packages GitHub ».

Lorsque vous utilisez l’API GraphQL pour interroger et supprimer des packages privés, vous devez utiliser le même personal access token (classic) que celui que vous utilisez pour vous authentifier auprès de GitHub Packages.

Pour plus d’informations, consultez « Formation d’appels avec GraphQL ».

Vous pouvez configurer des webhooks pour vous abonner à des événements liés à un package, par exemple lorsqu’un package est publié ou mis à jour. Pour plus d’informations, consultez « Événements et charges utiles du webhook ».

Contact du support

Si vous avez des commentaires ou des demandes de fonctionnalités pour GitHub Packages, utilisez une discussion GitHub Community.

Contactez-nous via le Portail de support GitHub à propos de GitHub Packages si :

  • Vous rencontrez un élément qui contredit la documentation
  • Vous rencontrez des erreurs vagues ou peu claires
  • Votre package publié contient des données sensibles, telles que des violations du RGPD, des clés API ou des informations d’identification personnelle