跳至主要内容

GitHub 软件包简介

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

关于 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 上查看软件包的 README 以及许可证、下载统计、版本历史等元数据。更多信息,请参阅查看软件包

软件包权限概览

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

软件包可见性概览

您可以在公共仓库(公共软件包)中发布软件包,以供全 GitHub 共享,亦可在私有仓库(私有软件包)中发布,以仅与协作者或组织共享。

关于组织的关联构件

关联构件页面是一种替代视图,您同样可以在组织设置的“软件包”部分访问它。

与 GitHub Packages 类似,关联构件页面可帮助您在同一位置收集组织构建的信息。团队可以使用该页面查找构件的源代码、构建细节以及部署历史。

不同于 GitHub Packages,关联构件页面托管软件包或镜像文件本身,而是为每个软件包或镜像提供权威的元数据来源。

您的组织可能从以下方式使用关联构件页面中受益:

  • GitHub Packages 并行使用,作为聚焦于合规性和安全性方面的补充视图
  • 作为 GitHub Packages 的替代方案,允许您将软件包存储在自行选择的外部注册表中,同时在 GitHub 上保持软件包的可见性

更多信息,请参阅关于关联构件

关于 GitHub Packages 的计费

GitHub Packages 对公共软件包的使用免费

对于私有软件包,GitHub 为每个账户提供一定量的免费存储和数据传输,具体额度取决于账户的计划。超出包含额度的使用量将受预算限制。

如果您的账户没有有效的付款方式,配额耗尽后将被阻止使用。

如果您已添加有效的付款方式,支出可能会被一个或多个预算限制。请检查为您的账户设置的预算,以确保它们符合您的使用需求。参阅设置预算以控制计量产品的支出

更多信息,请参阅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_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 Packages 通过GitHub 支持门户联系技术支持,请在以下情况下:

  • 您遇到的情况与文档描述不符
  • 您遇到的错误模糊或不明确
  • 您发布的软件包包含敏感数据,例如 GDPR 违规、API 密钥或个人身份信息
© . This site is unofficial and not affiliated with GitHub, Inc.