GitHub Packages

GitHub Packages 是一个用于托管和管理你的软件包、容器以及其他依赖的平台。你可以将 GitHub Packages 与 GitHub Actions、GitHub APIs 和 Webhooks 集成,这使得你能够创建一个端到端的工作流来发布和消费你的代码。

GitHub Packages 当前支持以下注册表:

  • 容器注册表:支持 Docker 和 OCI 镜像

  • npm 注册表:用于 JavaScript(package.json)

  • NuGet 注册表:用于 .NET(nupkg)

  • Apache Maven 注册表:用于 Java(pom.xml)

  • Gradle 注册表:用于 Java(build.gradle)

  • RubyGems 注册表:用于 Ruby(Gemfile)

定价

对于公共包,GitHub Packages 是免费的。对于私有包,每个 GitHub 版本包括一定的存储和数据传输量。超过这些限额的使用会单独收费,并且可以通过设置花费限制来控制。

按月计费的客户默认的花费限额为 0 美元,这会防止额外的存储或数据传输使用。开票客户的默认花费限额为无限制。

以下是每个 GitHub 产品的存储和数据传输包含量,见表 8.1:

image 2024 12 27 13 08 59 663
Figure 1. 表 8.1 – GitHub 产品中 Packages 的包含存储和数据传输量

所有通过 GitHub Actions 触发的外部数据传输都是免费的。来自任何来源的所有入站数据传输也都是免费的。

当达到包含的限制时,以下费用将会被收取:

  • 存储:每 GB 0.25 美元

  • 数据传输:每 GB 0.50 美元

有关定价的更多详细信息,请参见 GitHub Packages 计费

权限和可见性

发布到仓库中的包继承该仓库的权限和可见性。目前,只有容器包提供了更细粒度的权限和访问控制(见图 8.1)。

image 2024 12 27 13 10 31 706
Figure 2. 图 8.1 – 管理容器包的访问权限

其他类型的包遵循与仓库关联的访问权限规则。在组织级别,包默认是私有的,拥有者具有写权限,成员具有读权限。

如果你对容器镜像拥有管理员权限,你可以将该镜像的访问权限设置为私有或公开。公开镜像允许匿名访问,无需认证。你还可以为容器镜像设置与组织和仓库级别权限不同的独立访问权限。

在组织级别,你可以设置成员可以发布的容器包类型。你还可以查看和恢复已删除的包(见图 8.2)。

image 2024 12 27 13 10 47 325
Figure 3. 图 8.2 – 组织级别的包权限

对于用户账户拥有的容器镜像,你可以为任何人分配访问角色。对于由组织发布并拥有的容器镜像,你只能为组织内的个人或团队分配访问角色。

有关权限和可见性的更多详细信息,请参阅 GitHub Packages 权限和可见性配置