Skip to main content

GitHub Packages 简介

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

谁可以使用此功能?

GitHub Packages 适用于 GitHub Free、GitHub Pro、面向组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 3.0 或更高版本。
GitHub Packages 不适用于使用旧版按仓库计划的帐户所拥有的私有仓库。 此外,使用旧版按存储库计划的帐户无法访问支持精细权限的注册表,因为这些帐户按存储库计费。 Enterprise Managed Users 没有单独的存储分配来在其帐户的命名空间内发布包,但可以发布到组织的命名空间。 有关 Enterprise Managed Users 的其他信息,请参阅“关于 Enterprise Managed Users”。有关支持精细权限的注册表列表,请参阅“关于 GitHub Packages 的权限”。 有关详细信息,请参阅“GitHub 的计划”。

关于 GitHub Packages

GitHub Packages 是一个用于托管和管理包的平台,包括容器和其他依赖项。 GitHub Packages 将源代码和包组合在一起,以提供集成的权限管理和计费,使你能够在 GitHub Enterprise Cloud 上专注于软件开发。

您可以将 GitHub Packages 与 GitHub API、GitHub Actions 以及 web 挂钩集成在一起,以创建端到端的 DevOps 工作流程,其中包括您的代码、CI 和部署解决方案。

GitHub Packages 为常用的包管理器提供不同的包注册表,例如 npm、RubyGems、Apache Maven、Gradle、Docker 和 Nuget。 GitHub 的 Container registry 针对容器进行了优化,支持 Docker 和 OCI 映像。 有关 GitHub Packages 支持的不同包注册表的详细信息,请参阅“使用 GitHub Packages 注册表”。

您可以在 GitHub Enterprise Cloud 上查看包的自述文件、元数据(如许可)、下载统计、版本历史记录等。 有关详细信息,请参阅“查看包”。

包权限概述

可以从托管包的存储库继承包的权限,也可以为特定用户或组织定义该权限。 某些注册表仅支持从存储库继承的权限。 有关这些注册表的列表,请参阅“关于 GitHub Packages 的权限”。 有关包访问的详细信息,请参阅“配置包的访问控制和可见性”。

包可见性概述

可以在公共存储库中发布包(公共包)以与所有人GitHub共享,或者在专用存储库中发布包(专用包)以与协作者或组织共享。

关于 GitHub Packages 的计费

公共包免费使用 GitHub Packages。 对于专用包,GitHub 上的每个帐户都可获得一定数量的免费存储和数据传输,具体取决于帐户计划。 超出包含数量的任何使用量都由支出限制控制。 如果您是每月付费的用户,您的帐户默认支出限额为 0 美元,这将防止您在达到包含的限额后额外使用存储或数据传输。 如果按发票支付帐户费用,则帐户将具有无限制的默认支出限制。 有关详细信息,请参阅“关于 GitHub 包的计费”。

支持的客户端和格式

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

对包注册表的支持

语言说明包格式包客户端
JavaScript节点包管理器package.jsonnpm
RubyRubyGems 包管理器Gemfilegem
JavaApache Maven 项目管理和理解工具pom.xmlmvn
JavaJava 的 Gradle 构建自动化工具build.gradlebuild.gradle.ktsgradle
.NET.NET 的 NuGet 包管理nupkgdotnet CLI
空值Docker 容器管理平台DockerfileDocker

Note

Apache Maven 和 Gradle 注册表不适用于具有数据驻留的 GitHub Enterprise Cloud。

有关配置包客户端以结合使用 GitHub Packages 的详细信息,请参阅“使用 GitHub Packages 注册表”。

有关 Docker 和 Container registry 的详细信息,请参阅“使用容器注册表”。

向 GitHub Packages 验证

GitHub Packages 仅支持使用 personal access token (classic) 进行身份验证。 有关详细信息,请参阅“管理个人访问令牌”。

需要访问令牌才能发布、安装和删除专用、内部和公共包。

可使用 personal access token (classic) 向 GitHub Packages 或 GitHub API 进行身份验证。 创建 personal access token (classic) 时,可根据需要为令牌分配不同的作用域。 有关 personal access token (classic) 的包相关范围的详细信息,请参阅“关于 GitHub Packages 的权限”。

要在 GitHub Actions 工作流程内向 GitHub Packages 注册表验证,您可以使用:

  • GITHUB_TOKEN 发布与工作流存储库相关联的包。
  • 范围至少为 read:packages 的 personal access token (classic),用于安装与其他专用存储库(GITHUB_TOKEN 无法访问)关联的包。

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

管理包

可以在 GitHub Enterprise Cloud 用户界面中删除包或使用 REST API 删除包。 有关详细信息,请参阅“删除和恢复包”和“适用于包的 REST API 终结点”。 对于某些注册表,可以使用 GraphQL 删除专用包的版本。

不能将 GitHub Packages GraphQL API 与支持精细权限的注册表配合使用。 有关仅支持存储库范围权限且可与 GraphQL API 一起使用的注册表,请参阅“关于 GitHub Packages 的权限”。

使用 GraphQL API 查询和删除专用包时,必须使用向 GitHub Packages 验证时使用的同一 personal access token (classic)。

有关详细信息,请参阅 “使用 GraphQL 建立调用”。

您可以配置 web 挂钩来订阅与包相关的事件,例如包的发布或更新等事件。 有关详细信息,请参阅“Webhook 事件和有效负载”。

联系支持部门

如果你对 GitHub Packages 有反馈或功能请求,请使用 GitHub Community 讨论

如果在 GitHub Packages 方面遇到以下问题,请通过 GitHub 支持门户 联系我们:

  • 遇到任何与文档相矛盾的事情
  • 遇到模糊或不清楚的错误
  • 发布的包中含有敏感数据,例如违反 GDPR、API 密钥或个人身份信息