| title | Introduction to GitHub Packages | |||||||
|---|---|---|---|---|---|---|---|---|
| intro | {% data variables.product.prodname_registry %} is a software package hosting service that allows you to host your software packages privately or publicly and use packages as dependencies in your projects. | |||||||
| product | {% data reusables.gated-features.packages %} | |||||||
| redirect_from |
|
|||||||
| versions |
|
|||||||
| shortTitle | Introduction | |||||||
| category |
|
{% data reusables.package_registry.packages-ghes-release-stage %}
{% data variables.product.prodname_registry %} is a platform for hosting and managing packages, including containers and other dependencies. {% data variables.product.prodname_registry %} combines your source code and packages in one place to provide integrated permissions management{% ifversion fpt or ghec %} and billing{% endif %}, so you can centralize your software development on {% data variables.product.github %}.
You can integrate {% data variables.product.prodname_registry %} with {% data variables.product.github %}'s APIs, {% data variables.product.prodname_actions %}, and webhooks to create an end-to-end DevOps workflow that includes your code, CI, and deployment solutions.
{% data variables.product.prodname_registry %} offers different package registries for commonly used package managers, such as npm, RubyGems, Apache Maven, Gradle, Docker, and NuGet. {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}'s {% data variables.product.prodname_container_registry %} is optimized for containers and supports Docker and OCI images.{% endif %} For more information on the different package registries that {% data variables.product.prodname_registry %} supports, see AUTOTITLE.
You can view a package's README, as well as metadata such as licensing, download statistics, version history, and more on {% data variables.product.github %}. For more information, see AUTOTITLE.
{% ifversion ghes %}
For more information about the configuration of {% data variables.product.prodname_registry %} on {% data variables.product.prodname_ghe_server %}, see AUTOTITLE.
{% endif %}
The permissions for a package are either inherited from the repository where the package is hosted, or can be defined for specific users or organizations. Some registries only support permissions inherited from a repository. For a list of these registries, see AUTOTITLE. For more information on package access, see AUTOTITLE.
{% data reusables.package_registry.public-or-private-packages %}
{% ifversion virtual-registry %}
The {% data variables.product.virtual_registry %} is an alternative view that you can also access in the "Packages" section of an organization's settings.
Like {% data variables.product.prodname_registry %}, the {% data variables.product.virtual_registry %} allows you to collect information about your organization's builds in a single place. Teams can use the {% data variables.product.virtual_registry %} to find an artifact's source code, build details, and deployment history.
Unlike {% data variables.product.prodname_registry %}, the {% data variables.product.virtual_registry %} does not host the package or image files themselves. Instead, it provides an authoritative source for the metadata associated with each package or image.
Your organization may benefit from using the {% data variables.product.virtual_registry %} either:
- Alongside {% data variables.product.prodname_registry %}, as a complementary view focused on the compliance and security aspects of package consumption
- As an alternative to {% data variables.product.prodname_registry %}, allowing you to store your packages on an external registry of your choice while maintaining visibility of the packages on {% data variables.product.github %}
For more information, see AUTOTITLE.
{% endif %}
{% ifversion fpt or ghec %}
{% data reusables.package_registry.packages-billing %}
{% data reusables.billing.default-over-quota-behavior %}
For more information, see AUTOTITLE.
{% endif %}
{% data variables.product.prodname_registry %} uses the native package tooling commands you're already familiar with to publish and install package versions.
| Language | Description | Package format | Package client |
|---|---|---|---|
| JavaScript | Node package manager | package.json |
npm |
| Ruby | RubyGems package manager | Gemfile |
gem |
| Java | Apache Maven project management and comprehension tool | pom.xml |
mvn |
| Java | Gradle build automation tool for Java | build.gradle or build.gradle.kts |
gradle |
| .NET | NuGet package management for .NET | nupkg |
dotnet CLI |
| N/A | Docker container management | Dockerfile |
Docker |
{% ifversion ghes %}
Note
When enabling the Docker registry, we highly recommend also enabling subdomain isolation. For more information, see AUTOTITLE.
{% endif %}
{% ifversion ghec %}
Note
The Apache Maven and Gradle registries are not available for {% data variables.enterprise.data_residency %}.
{% endif %}
For more information about configuring your package client for use with {% data variables.product.prodname_registry %}, see AUTOTITLE.
{% ifversion fpt or ghec %} For more information about Docker and the {% data variables.product.prodname_container_registry %}, see AUTOTITLE. {% endif %}
{% data reusables.package_registry.authenticate-packages %}
{% data reusables.package_registry.authenticate-packages-github-token %}
You can delete a package in the {% data variables.product.github %} user interface or using the REST API. For more information, see AUTOTITLE and the AUTOTITLE. {% data reusables.package_registry.about-graphql-support %}
When you use the GraphQL API to query and delete private packages, you must use the same {% data variables.product.pat_v1 %} you use to authenticate to {% data variables.product.prodname_registry %}.
For more information, see {% ifversion ghes %}AUTOTITLE and {% endif %}AUTOTITLE.
You can configure webhooks to subscribe to package-related events, such as when a package is published or updated. For more information, see the AUTOTITLE.
{% ifversion fpt or ghec %} If you have feedback or feature requests for {% data variables.product.prodname_registry %}, use a {% data variables.product.prodname_github_community %} discussion.
Contact us through the {% data variables.contact.contact_support_portal %} about {% data variables.product.prodname_registry %} if:
- You experience anything that contradicts the documentation
- You encounter vague or unclear errors
- Your published package contains sensitive data, such as GDPR violations, API Keys, or personally identifying information
{% else %} If you need support for {% data variables.product.prodname_registry %}, please contact your site administrators.
{% endif %}