Skip to main content

GitHub Packages 简介

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

关于 GitHub Packages

          GitHub Packages 是用于托管和管理包的平台,包括容器和其他依赖项。 
          GitHub Packages 将源代码和包集中于一个平台,以提供集成的权限管理和 计费,以便在GitHub 上集中进行软件开发。

可以将GitHub Packages与GitHub的API、GitHub Actions和Webhook集成,创建一个端到端的DevOps工作流,其中包含代码、CI和部署解决方案。

          GitHub Packages 为常用包管理器提供不同的包注册表,例如 npm、RubyGems、Apache Maven、Gradle、Docker 和 NuGet。 
          
          GitHub's Container registry 针对容器进行优化,支持 Docker 和 OCI 映像。 有关支持的不同包注册表 GitHub Packages 的详细信息,请参阅 [AUTOTITLE](/packages/working-with-a-github-packages-registry)。

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

包权限概述

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

包可见性概述

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

关于组织的链接项目

          linked artifacts page这是另一种视图,也可以在组织的设置的“包”部分中访问。

同样 GitHub Packages, linked artifacts page 允许你在单个位置收集有关组织内部版本的信息。 团队可以使用 linked artifacts page 查找工件的源代码、构建详情和部署历史记录。

与 GitHub Packages 不同,linked artifacts page本身不托管包或映像文件。 而是为每个包或镜像的相关元数据提供权威来源。

你的组织可能受益于使用以下任意一种linked artifacts page:

  •         **同时**GitHub Packages,作为一种补充视图,侧重于包消耗的合规性和安全性方面
    
  •         **作为替代方法**GitHub Packages,您可以将软件包存储在您选择的外部注册表上,同时确保这些包在GitHub上的可见性得到保持。
    

有关详细信息,请参阅“关于关联的项目”。

关于计费 GitHub Packages

公共包免费使用 GitHub Packages********。

对于专用包,GitHub 上的每个帐户都可获得一定的免费存储空间和数据传输量,具体取决于帐户计划********。 超出包含数量的任何使用量都由支出限制控制。

如果你的帐户未添加有效的付款方式,则配额用尽后将无法继续使用服务。

如果你有有效的付款方式,支出可能会受到一个或多个预算的限制。 检查为帐户设置的预算,确保其适合你的使用需求。 请参阅“设置预算以控制按流量计费的产品的支出”。

有关详细信息,请参阅“GitHub程序包计费”。

支持的客户端和格式

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

对包注册表的支持

语言说明包格式软件包客户端
JavaScriptNode.js 包管理器package.jsonnpm
RubyRubyGems 包管理器Gemfilegem
JavaApache Maven 项目管理和理解工具pom.xmlmvn
JavaJava 的 Gradle 自动化构建工具
          `build.gradle` 或 `build.gradle.kts`  | `gradle`  |

| .NET | .NET 的 NuGet 包管理 | nupkg |
dotnet CLI(命令行界面) | | 空值 | Docker 容器管理平台 | Dockerfile | Docker |

有关配置包客户端以供使用 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_TOKEN 进行身份验证

管理软件包

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

不能将 GitHub Packages GraphQL API 与支持精细权限的注册表配合使用。 有关仅支持仓库作用域权限且可与 GraphQL API 一起使用的注册表,请参阅 关于 GitHub Packages 的权限****。

使用 GraphQL API 查询和删除专用包时,必须使用用于进行身份验证的相同 personal access token (classic) 方法 GitHub Packages。

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

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

联系支持部门

如果您有关于 GitHub Packages 的反馈或功能请求,请使用 GitHub Community 讨论提交。

通过 GitHub 支持门户,如果是关于 GitHub Packages 的事宜,请联系我们。

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