什么是 GitHub Packages?

已完成

GitHub Packages 是一种包管理服务,可让你轻松地在源代码旁边发布公共包或专用包。

注意

如果你尚不熟悉 GitHub,请查看 GitHub 简介 Learn 模块。

GitHub Packages 是一个包注册表

通过 GitHub Packages,可以在组织内或公开共享项目依赖项。

当处理具有包依赖项的项目时,请务必信任这些包、了解其代码,并与生成它们的社区进行联系。 在组织内部,另需快速找到已批准使用的内容。

GitHub Packages 使用熟悉的同一 GitHub 界面来在 GitHub 上的任何位置查找公共包,或者在组织或存储库中查找专用包。

标准包管理器

GitHub Packages 与常见的包管理客户端兼容,因此你可以使用所选工具发布包。 如果你的存储库较复杂,则可能需要发布多个不同类型的包。 也可使用 Webhook 或 GitHub Actions 来完全自定义发布和发布后的工作流。

是否要发布开源包? 许多开源项目将其代码存储在 GitHub 上,因此,你可以在社区中发布包的预发行版以进行测试,然后轻松地将特定版本提升为所选的公共注册表。

GitHub n p m package page, with description, and instructions about how to install it.

撰写本文时,GitHub Packages 与下列包管理器兼容:

  • npm,一种 NodeJS 包管理器
  • NuGet,一种 .NET 包管理器
  • RubyGems,一款 Ruby 包管理器
  • Maven 和 Gradle,适用于 Java 的两种包管理器

GitHub Packages 也是一种容器注册表

从完整的应用程序到 CLI 实用工具,容器是分发代码的另一种形式。 通过 GitHub Packages 可以发布和分发容器映像。 公开或非公开发布后,可以从任何位置使用这些映像,包括:

  • 在本地开发环境中
  • 作为 GitHub Codespaces 开发环境的基础映像
  • 作为使用 GitHub Actions 执行持续集成 (CI) /持续部署 (CD) 工作流的一个步骤
  • 在服务器或云服务上

GitHub container image page, with image versions listing, statistics and instructions about how to install it.

比较 GitHub Packages 和 GitHub Releases

GitHub Packages 用于将库的版本发布到标准包源或容器注册表。 它们旨在利用特定包管理客户端处理该源的方式,例如链接回在其中创建包的存储库以及所使用的代码版本。

GitHub Releases 用于发布打包软件捆绑包、发行说明和指向二进制文件的链接。 可以直接从其唯一的 URL 下载这些版本,并可以将其追溯到创建它们的特定提交。 只能将版本下载为 tarball 或 ZIP 文件。

统一标识和权限

假设你正在处理一个项目,其中使用 GitHub 托管源代码:将 JavaScript 用于前端,将 npm 和 Java 用于后端。 你现在至少维护了三组不同的用户凭据和权限:对于 Git、npm 和 Maven 存储库。

有了 GitHub Packages,你可以在源代码存储库、专用 npm 注册表和 Maven 或 Gradle 专用注册表中使用单组凭据。 通过 GitHub 发布的包将继承在存储库级别分配的可见性和权限。 新的团队成员需要具有对包及其代码的读取访问权限? 授予他们对存储库的读取权限,就大功告成了!

从 GitHub 生成和发布包

GitHub Actions 是另一项 GitHub 功能,可让你自动执行软件工作流。 可以直接从 GitHub 生成、测试和部署代码。

提示

如果要了解有关 GitHub Actions 的详细信息,请参阅 Learn 模块使用 GitHub Actions 生成持续集成 (CI) 工作流

通过将 GitHub Actions 和 GitHub Packages 结合使用,可以生成一个工作流来生成和测试代码,然后只需将代码推送到存储库即可将其发布到 GitHub Packages。

在下一单元中,我们将了解如何使用工作流发布到 GitHub Packages 和 GitHub Container Registry。