我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

关于 GitHub 包

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

GitHub Packages 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 2.22 和 GitHub One。

本文内容

注: GitHub Packages 目前正在测试用于 GitHub Enterprise Server 2.22。 要加入您的实例的测试版,请使用注册表单

关于 GitHub Packages

GitHub Packages 是一种包托管服务,与 GitHub 完全集成。 GitHub Packages 将您的源代码和包组合在一起,以提供集成的权限管理和计费,使您能够在 GitHub Enterprise Server 上专注于软件开发。

您可以将 GitHub Packages 与 GitHub Enterprise Server API、GitHub Actions 以及 web 挂钩集成在一起,以创建端到端的 DevOps 工作流程,其中包括您的代码、CI 和部署解决方案。

您可以在一个仓库中托管多个包,并通过查看包的自述文件、下载统计、版本历史等,了解每个包的更多信息。

查看包

您可以在 GitHub Enterprise Server 上查看软件包的 README、一些元数据(如许可)、下载统计、版本历史记录等。 更多信息请参阅“查看包”。

关于包权限和可见性

包注册表
托管位置您可以在一个仓库中托管多个包。
权限您可以在公共仓库中发布包(公共包)以与 您的实例中的每个人、或者在私有仓库中发布包(私有包)以与协作者或组织分享。 您可以使用 GitHub 角色和团队来限制谁可以安装或发布每个包,因为包会继承仓库的权限。 对仓库有读取权限的任何人都可以将包安装为项目中的依赖项,有写入权限的任何人都可以发布新的包版本。
可见性您可以在公共仓库中发布包(公共包)以与 您的实例中的每个人、或者在私有仓库中发布包(私有包)以与协作者或组织分享。

支持的客户端和格式

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

对包注册表的支持

your GitHub Enterprise Server instance 支持的软件包类型可能有所不同,因为您的网站管理员可能启用或禁用对不同软件包的支持。 更多信息请参阅“为企业管理 GitHub Packages”。

如果 your GitHub Enterprise Server instance 已启用子域隔离,则软件包注册表将使用 PACKAGE-TYPE.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME 作为软件包主机 URL,用软件包命名空间替换 PACKAGE-TYPE。 例如,Dockerfile 将托管在 docker.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME 上。

如果 your GitHub Enterprise Server instance 已禁用子域隔离,则软件包注册表将使用 HOSTNAME/_registry/PACKAGE-TYPE/OWNER/REPOSITORY/IMAGE-NAME 作为软件包主机 URL。 例如,Gemfile 将托管在 HOSTNAME/_registry/rubygems/OWNER/REPOSITORY/IMAGE-NAME 上,用 GitHub Enterprise Server 实例的主机名称替换 HOSTNAME。 |

在 your GitHub Enterprise Server instance 上启用了子域隔离:

语言描述包格式包客户端包命名空间
JavaScript节点包管理器package.jsonnpmnpm.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME
RubyRubyGems 包管理器Gemfilegemrubygems.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME
JavaApache Maven 项目管理和理解工具pom.xmlmvnmaven.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME
JavaJava 的 Gradle 构建自动化工具build.gradlebuild.gradle.ktsgradlemaven.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME
.NET.NET 的 NuGet 包管理nupkgdotnet CLInuget.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME
不适用Docker 容器管理平台DockerfileDockerdocker.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME

在 your GitHub Enterprise Server instance 上禁用了子域隔离:

语言描述包格式包客户端包命名空间
JavaScript节点包管理器package.jsonnpmHOSTNAME/_registry/npm/OWNER/REPOSITORY/IMAGE-NAME
RubyRubyGems 包管理器GemfilegemHOSTNAME/_registry/rubygems/OWNER/REPOSITORY/IMAGE-NAME
JavaApache Maven 项目管理和理解工具pom.xmlmvnHOSTNAME/_registry/maven/OWNER/REPOSITORY/IMAGE-NAME
JavaJava 的 Gradle 构建自动化工具build.gradlebuild.gradle.ktsgradleHOSTNAME/_registry/maven/OWNER/REPOSITORY/IMAGE-NAME
.NET.NET 的 NuGet 包管理nupkgdotnet CLIHOSTNAME/_registry/nuget/OWNER/REPOSITORY/IMAGE-NAME

注:禁用子域隔离时,不支持 Docker。

有关子域隔离的更多信息,请参阅“启用子域隔离”。

有关配置包客户端以用于 GitHub Packages 的更多信息,请参阅“将 GitHub Packages 用于项目的生态系统”。

向 GitHub Packages 验证

您需要访问令牌才能发布、安装和删除 GitHub Packages 中的包。 您可以使用个人访问令牌直接向 GitHub Packages 或 GitHub API 验证您的用户名。 创建个人访问令牌时,可根据需要为令牌分配不同的作用域。

要 使用 GitHub Actions 工作流程向 GitHub Packages 验证,必须使用 GITHUB_TOKEN

管理包

要安装或发布包,您必须使用具有适当作用域的令牌,并且您的用户帐户必须对该仓库具有适当的权限。

例如:

  • 要从仓库下载和安装包,您的令牌必须具有 read:packages 作用域,并且您的用户帐户必须对该仓库具有读取权限。
  • 要在 GitHub Enterprise Server 上删除私有包的特定版本,您的令牌必须具有 delete:packagesrepo 作用域。 公共包无法删除。 更多信息请参阅“删除包”。
作用域描述仓库权限
read:packages从 GitHub Packages 下载和安装包读取
write:packages将包上传和发布到 GitHub Packages写入
delete:packages从 GitHub Packages 删除私有包的特定版本管理员
repo上传和删除包(连同 write:packagesdelete:packages写入或管理员

创建 GitHub Actions 工作流程时,您可以使用 GITHUB_TOKEN 发布和安装 GitHub Packages 中的包,无需存储和管理个人访问令牌。

更多信息请参阅:

  • 遇到任何与文档相矛盾的事情
  • 创建个人访问令牌”。
  • 发布的包中含有敏感数据,例如违反 GDPR、API 密钥或个人身份信息

管理包

您可以在 GitHub Enterprise Server 上或使用 GraphQL API 删除私有包的版本。 使用 GraphQL API 查询和删除私有包时,必须使用与向 GitHub Packages 验证时相同的令牌。 更多信息请参阅“删除包”和“使用 GraphQL 进行调用”。

您可以配置 web 挂钩来订阅与包相关的事件,例如包的发布或更新等事件。 更多信息请参阅“package web 挂钩事件”。

联系支持

如果您需要对 GitHub Packages 的支持,请联系网站管理员。

此文档对您有帮助吗?

Privacy policy

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。