Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2024-09-25. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

关于 GitHub Packages 的权限

了解如何管理包的权限。

包的权限可以将范围限定为用户、组织或存储库。

用户/组织作用域包的精细权限

具有精细权限的包仅限于个人帐户或组织。 您可以从与包相连(或链接)的仓库分别更改包的访问控制和可见性。

以下 GitHub Packages 注册表支持精细权限。

  • Container registry

仓库作用域包的权限

存储库范围的包会继承发布包的存储库的权限和可见性。 通过转到存储库的主页并单击页面右侧的“包”链接,可以找到范围限定为存储库的包。

以下 GitHub Packages 注册表支持存储库范围的权限。

  • Docker 注册表 (docker.pkg.github.com)
  • npm 注册表
  • Apache Maven 注册表
  • Gradle 注册表
  • NuGet 注册表
  • RubyGems 注册表

对于 Container registry,可以选择允许将包的范围限定为用户或组织,或链接到存储库。 有关迁移到 Container registry 的详细信息,请参阅 从 Docker 注册表迁移到容器注册表

包的可见性和访问权限

如果包属于支持粒度权限的注册表,对包具有管理员权限的任何人都可以将包设置为专用或公共,并且可以授予对包的访问权限,这些权限不同于在组织和存储库级别设置的权限。 有关支持精细权限的注册表的列表,请参阅“关于 GitHub Packages 的权限”。

在大多数注册表中,若要拉取包,必须使用 personal access token 或 GITHUB_TOKEN 进行身份验证,无论该包是公共包还是专用包。 但是,在 Container registry 中,公共包支持匿名访问,无需身份验证或通过 CLI 登录即可进行拉取。

你发布包时,会自动获取对包的管理员权限。 如果将包发布到组织,则组织中具有 owner 角色的任何人也会获得包的管理员权限。

对于范围限定为个人帐户的包,可以授予任何人访问角色。 对于范围限定为组织的包,可以为组织中的任何人或团队授予访问角色。

如果使用 GitHub Actions 工作流来管理包,可以通过 通过“Actions 访问”**** 菜单选项执行操作 向存储工作流的存储库授予访问角色。 有关详细信息,请参阅“配置包的访问控制和可见性”。

权限访问说明
读取可以下载包。
可以读取包元数据。
写入可以上传和下载此包。
可以读取和写入包元数据。
管理员可以上传、下载、删除和管理此包。
可以读取和写入包元数据。
可以授予包权限。

Note

GitHub Actions 工作流使用 REST API 删除和还原包的功能目前为 beta 版本,可能随时更改。

有关详细信息,请参阅“配置包的访问控制和可见性”。

管理包

Note

GitHub Packages 仅支持使用 personal access token (classic) 进行身份验证。 有关详细信息,请参阅“管理个人访问令牌”。

要使用或管理由包注册表托管的包,必须使用具有适当范围的 personal access token (classic),并且个人帐户必须具有适当的权限。

例如:

  • 要从存储库下载和安装包,你的 personal access token (classic) 必须具有 read:packages 范围,并且用户帐户必须具有读取权限。
  • 要删除 GitHub Enterprise Server 上的包,personal access token (classic) 必须至少具有 delete:packagesread:packages 范围。 有关详细信息,请参阅“删除和恢复包”。
作用域说明必需的权限
read:packages从 GitHub Packages 下载和安装包读取
write:packages将包上传和发布到 GitHub Packages写入
delete:packages从 GitHub Packages 中删除包管理员

Note

GitHub Actions 工作流使用 REST API 删除和还原包的功能目前为 beta 版本,可能随时更改。

如果要创建 GitHub Actions 工作流,可使用 GITHUB_TOKEN 发布、安装、删除和还原 GitHub Packages 中的包,而无需存储和管理 personal access token。

更多信息请参阅:

关于仓库转让

可以将存储库转移到其他个人帐户或组织。 有关详细信息,请参阅“转让仓库”。

转移存储库时,GitHub 可能会转移与存储库关联的包,具体取决于包所属的注册表。

  • 对于支持精细权限的注册表,包的范围限定为个人帐户或组织,并且与包关联的帐户在转移存储库时不会更改。 如果已将包链接到存储库,则在将存储库传输给另一个用户时会删除该链接。 与存储库关联的任何 GitHub Actions 工作流都将失去对该包的访问权限。 如果包从链接的存储库继承了其访问权限,则用户将失去对包的访问权限。 有关这些注册表的列表,请参阅上面的用户/组织作用域的包的精细权限
  • 对于仅支持存储库范围权限的注册表,包直接发布到存储库,GitHub 在存储库转移过程中转移与存储库关联的包。 与包关联的所有可计费使用量随后都会向存储库的新所有者计费。 如果以前的存储库所有者作为存储库上的协作者被删除,他们可能无法再访问与存储库关联的包。 有关这些注册表的列表,请参阅上面的仓库作用域的包的权限

在 GitHub Actions 工作流程中维持对包的访问权限

为了确保工作流程将保持对包的访问,请确保在工作流程中使用正确的访问令牌,并启用了 GitHub Actions 对包的访问权限。

有关 GitHub Actions 的更多概念背景或在工作流中使用包的示例,请参阅 使用 GitHub Actions 工作流程管理 GitHub Packages

访问令牌

Note

GitHub Actions 工作流使用 REST API 删除和还原包的功能目前为 beta 版本,可能随时更改。

  • 要发布、安装、删除和还原与工作流存储库相关联的包,请使用 GITHUB_TOKEN
  • 要安装与 GITHUB_TOKEN 无法访问的其他专用存储库相关联的包,请使用 personal access token (classic)

有关 GitHub Actions 工作流中使用的 GITHUB_TOKEN 的详细信息,请参阅 自动令牌身份验证