我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

GitHub Packages 简介

GitHub Packages 是一项软件包托管服务,允许您私下为指定的用户托管您的软件包或公开托管,以及在您的项目中使用软件包作为依赖项。

GitHub Packages 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 和 GitHub AE。


GitHub Packages 不适用于使用旧版按仓库计划的帐户所拥有的私有仓库。 此外,使用旧版按仓库计划的帐户无法访问 Container registry,因为这些帐户是按仓库计费的。 更多信息请参阅“[GitHub 的产品](/articles/github-s-products)”。

关于 GitHub Packages

GitHub Packages 是一种包托管服务,与 GitHub 完全集成。 GitHub Packages 将您的源代码和软件包组合在一起,以提供集成的权限管理和计费,使您能够在 GitHub 上专注于软件开发。

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

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

显示支持 Docker、容器注册表、RubyGems、npm、Apache Maven、NuGet 和 Gradle 的软件包的示意图

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

包的权限和可见性概述

权限
包的权限继承自托管该包的仓库或 Container registry 中的包,可以为特定的用户或组织帐户定义它们。 更多信息请参阅“配置包的访问控制和可见性”。
可见性您可以在公共仓库中发布包(公共包)以与所有人GitHub共享,或者在私有仓库(私有包)中与协作者或组织共享。

更多信息请参阅“关于 GitHub Packages 的权限”。

关于 GitHub Packages 的计费

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

支持的客户端和格式

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

对包注册表的支持

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

有关配置包客户端以用于 GitHub Packages 的更多信息,请参阅“使用 GitHub Packages 注册表“。

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

向 GitHub Packages 验证

您需要访问令牌才能发布、安装和删除 GitHub Packages 中的包。

您可以使用个人访问令牌 (PAT) 向 GitHub Packages 或 GitHub API 验证。 创建个人访问令牌时,可根据需要为令牌分配不同的作用域。 有关 PAT 与包相关的域的更多信息,请参阅“关于 GitHub Packages 的权限”。

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

  • GITHUB_TOKEN 来发布与工作流程仓库相关联的包。
  • PAT 来安装与其他私有仓库(GITHUB_TOKEN 无法访问)相关联的包。

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

管理包

您可以在 GitHub 用户界面中或使用 REST API 删除包。 更多信息请参阅“GitHub Packages API”。

使用 GraphQL API 查询和删除私有包时,必须使用与向 GitHub Packages 验证时相同的令牌。 更多信息请参阅“删除和恢复包”和“使用 GraphQL 建立呼叫”。

您可以配置 web 挂钩来订阅与包相关的事件,例如包的发布或更新等事件。 更多信息请参阅“package web 挂钩事件”。

联系支持

如果您对 GitHub Packages 有反馈或功能请求,请使用 GitHub Packages 反馈表

如果在 GitHub Packages 方面遇到以下问题,请使用我们的联系表联系 GitHub 支持:

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

此文档对您有帮助吗? 隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。