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 Packages 的详细信息,请参阅 [AUTOTITLE](/packages/working-with-a-github-packages-registry)。

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

有关在GitHub Enterprise Server上配置GitHub Packages的详细信息,请参阅 企业 GitHub Packages 使用入门

包权限概述

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

包可见性概述

可以在公共存储库中发布包(公共包)以与企业中每个人共享,或者在专用存储库中发布包(专用包)以与协作者或组织共享。

支持的客户端和格式

          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 |

注意

启用 Docker 注册表时,我们强烈建议还启用子域隔离。 有关详细信息,请参阅“启用子域隔离”。

有关配置包客户端以供使用 GitHub Packages的详细信息,请参阅 使用 GitHub Packages 注册表

正在对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,请联系站点管理员。