跳至主要内容

GitHub 包简介

GitHub Packages 是一种软件包托管服务,允许您私有或公开托管您的软件包,并在项目中将软件包用作依赖项。

谁可以使用此功能?

GitHub Packages 可用于 GitHub 免费版、GitHub Pro、GitHub 组织免费版、GitHub 团队版、GitHub Enterprise Cloud 以及 GitHub Enterprise Server 3.0 或更高版本。


使用旧版按存储库计费计划的帐户拥有的私有存储库无法使用 GitHub Packages。此外,使用旧版按存储库计费计划的帐户无法访问支持细粒度权限的注册表,因为这些帐户按存储库计费。有关支持细粒度权限的注册表列表,请参阅“GitHub Packages 权限简介”。有关更多信息,请参阅“GitHub 的计划”。

关于 GitHub Packages

GitHub Packages 是一个用于托管和管理软件包(包括容器和其他依赖项)的平台。GitHub Packages 将您的源代码和软件包集中在一个位置,以提供集成的权限管理和计费,以便您可以在 GitHub 上集中您的软件开发。

您可以将 GitHub Packages 与 GitHub API、GitHub Actions 和 Webhook 集成,以创建包含代码、CI 和部署解决方案的端到端 DevOps 工作流。

GitHub Packages 为常用的包管理器(如 npm、RubyGems、Apache Maven、Gradle、Docker 和 NuGet)提供不同的软件包注册表。GitHub 的容器注册表针对容器进行了优化,并支持 Docker 和 OCI 镜像。有关 GitHub Packages 支持的不同软件包注册表的更多信息,请参阅“使用 GitHub Packages 注册表”。

您可以在 GitHub 上查看软件包的自述文件,以及许可、下载统计信息、版本历史记录等元数据。有关更多信息,请参阅“查看软件包”。

软件包权限概述

软件包的权限要么继承自托管软件包的存储库,要么可以为特定用户或组织定义。某些注册表仅支持从存储库继承的权限。有关这些注册表的列表,请参阅“GitHub Packages 权限简介”。有关软件包访问的更多信息,请参阅“配置软件包的访问控制和可见性”。

软件包可见性概述

您可以将软件包发布到公共存储库(公共软件包)以与所有 GitHub 用户共享,或发布到私有存储库(私有软件包)以与协作者或组织共享。

关于 GitHub Packages 的计费

公共软件包的 GitHub Packages 使用是免费的。对于私有软件包,GitHub 上的每个帐户都会获得一定数量的免费存储空间和数据传输量,具体取决于帐户的计划。超出包含数量的任何使用量均受支出限额控制。如果您是按月付费的客户,您的帐户将具有 0 美元(USD)的默认支出限额,这将阻止您在达到包含数量后额外使用存储空间或数据传输量。如果您通过发票支付帐户,则您的帐户将具有无限的默认支出限额。有关更多信息,请参阅“关于 GitHub Packages 的计费”。

支持的客户端和格式

GitHub Packages 使用您已经熟悉的原生软件包工具命令来发布和安装软件包版本。

软件包注册表支持

语言描述软件包格式软件包客户端
JavaScriptNode 包管理器package.jsonnpm
RubyRubyGems 软件包管理器Gemfilegem
JavaApache Maven 项目管理和理解工具pom.xmlmvn
JavaGradle Java 构建自动化工具build.gradlebuild.gradle.ktsgradle
.NETNuGet .NET 软件包管理nupkgdotnet CLI
N/ADocker 容器管理DockerfileDocker

有关将软件包客户端配置为与 GitHub Packages 一起使用的更多信息,请参阅“使用 GitHub Packages 注册表”。

有关 Docker 和容器注册表的更多信息,请参阅“使用容器注册表”。

对 GitHub Packages 进行身份验证

GitHub Packages 仅支持使用个人访问令牌(经典)进行身份验证。有关更多信息,请参阅“管理您的个人访问令牌”。

您需要访问令牌才能发布、安装和删除私有、内部和公共软件包。

您可以使用个人访问令牌(经典)对 GitHub Packages 或 GitHub API 进行身份验证。创建个人访问令牌(经典)时,您可以根据需要为令牌分配不同的作用域。有关个人访问令牌(经典)的与软件包相关的作用域的更多信息,请参阅“GitHub Packages 权限简介”。

要在 GitHub Actions 工作流中对 GitHub Packages 注册表进行身份验证,您可以使用

  • GITHUB_TOKEN 发布与工作流存储库关联的软件包。
  • 至少具有 read:packages 作用域的个人访问令牌(经典)来安装与其他私有存储库关联的软件包(GITHUB_TOKEN 无法访问这些软件包)。

有关在 GitHub Actions 工作流中使用的 GITHUB_TOKEN 的更多信息,请参阅“自动令牌身份验证”。

管理软件包

您可以在 GitHub 用户界面或使用 REST API 删除软件包。有关更多信息,请参阅“删除和恢复软件包”和“软件包的 REST API 端点”。对于某些注册表,您可以使用 GraphQL 删除私有软件包的版本。

您无法将 GitHub Packages GraphQL API 用于支持细粒度权限的注册表。对于**仅**支持存储库范围权限并可与 GraphQL API 一起使用的注册表,请参阅“关于 GitHub Packages 的权限”。

当您使用 GraphQL API 查询和删除私有包时,必须使用与身份验证到 GitHub Packages 相同的个人访问令牌(经典)。

有关更多信息,请参阅“使用 GraphQL 形成调用”。

您可以配置 Webhook 以订阅与包相关的事件,例如发布或更新包时。有关更多信息,请参阅“Webhook 事件和有效负载”。

联系支持

如果您对 GitHub Packages 有反馈或功能请求,请使用GitHub 社区讨论

如果您遇到以下情况,请通过GitHub 支持门户联系我们以获取有关 GitHub Packages 的帮助:

  • 遇到与文档相矛盾的情况
  • 遇到含糊不清的错误
  • 已发布的包包含敏感数据,例如 GDPR 违规、API 密钥或个人识别信息