关于 GitHub 包
GitHub 包是一个用于托管和管理包的平台,包括容器和其他依赖项。GitHub 包将您的源代码和包整合在一个地方,提供集成的权限管理和计费,以便您可以在 GitHub 上集中软件开发。
您可以将 GitHub 包与 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.com 上的每个帐户都会收到一定数量的免费存储空间和数据传输,具体取决于帐户的计划。超出包含数量的任何使用都由支出限额控制。如果您是按月付费的客户,您的帐户将有一个默认支出限额为 0 美元(USD),这将阻止您在达到包含数量后使用额外的存储空间或数据传输。如果您通过发票支付您的帐户,您的帐户将有一个无限的默认支出限额。有关更多信息,请参阅“关于 GitHub Packages 的计费”。
支持的客户端和格式
GitHub Packages 使用您已经熟悉的原生包工具命令来发布和安装包版本。
对包注册表的支持
语言 | 描述 | 包格式 | 包客户端 |
---|---|---|---|
JavaScript | Node 包管理器 | package.json | npm |
Ruby | RubyGems 包管理器 | Gemfile | gem |
Java | Apache Maven 项目管理和理解工具 | pom.xml | mvn |
Java | Gradle 用于 Java 的构建自动化工具 | build.gradle 或 build.gradle.kts | gradle |
.NET | NuGet 用于 .NET 的包管理 | nupkg | dotnet CLI |
N/A | Docker 容器管理 | Dockerfile | Docker |
有关配置包客户端以与 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 密钥或个人身份信息