Skip to main content

将仓库连接到包

可以将存储库连接到 GitHub 上的包。

谁可以使用此功能?

GitHub Packages 适用于 GitHub Free、GitHub Pro、面向组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 3.0 或更高版本。
GitHub Packages 不适用于使用旧版按仓库计划的帐户所拥有的私有仓库。 此外,使用旧版按存储库计划的帐户无法访问支持精细权限的注册表,因为这些帐户按存储库计费。 Enterprise Managed Users 没有单独的存储分配来在其帐户的命名空间内发布包,但可以发布到组织的命名空间。 有关 Enterprise Managed Users 的其他信息,请参阅“关于 Enterprise Managed Users”。有关支持精细权限的注册表列表,请参阅“关于 GitHub Packages 的权限”。 有关详细信息,请参阅“GitHub 的计划”。

发布范围限定为个人帐户或组织的包时,默认情况下,包不会链接到存储库。 若将包连接到存储库,包登陆页面将显示来自存储库的信息和链接,例如 README。 还可以选择让包从链接存储库继承其访问权限。 有关详细信息,请参阅“配置包的访问控制和可见性”。

在 GitHub

上将存储库连接到用户范围的包

  1. 在 GitHub 上,导航到个人帐户的主页面。

  2. 在 GitHub 的右上角,单击个人资料照片,然后单击“你的个人资料”。

    @octocat 的个人资料图片下的下拉菜单的屏幕截图。 “你的个人资料”用深橙色框出。

  3. 在个人资料页面上的标题中,单击 “包”选项卡。

  4. 搜索要管理的包的名称,然后单击该名称。

  5. 在包版本下,单击“连接存储库”。

  6. 选择要链接到包的存储库,然后单击“连接存储库”。

在 GitHub

上将存储库连接到组织范围的包

  1. 在 GitHub 上,导航到组织的主页面。

  2. 在组织名称下,单击 “包”选项卡。

    @octo-org 的个人资料页面的屏幕截图。 “包”选项卡以橙色边框突出显示。

  3. 搜索要管理的包的名称,然后单击该名称。

  4. 在包版本下,单击“连接存储库”。

  5. 选择要链接到包的存储库,然后单击“连接存储库”。

使用命令行将仓库连接到容器映像

注意: 如果发布链接到存储库的包,该包会自动继承链接存储库的访问权限,链接存储库中的 GitHub Actions 工作流会自动获得对包的访问权限,除非你的组织已禁用访问权限的自动继承。 有关详细信息,请参阅“配置包的访问控制和可见性”。

  1. 在 Dockerfile 中,添加此行,将 OWNERREPO 替换为详细信息:

    LABEL org.opencontainers.image.source=https://github.com/OWNER/REPO
    

    例如,如果你是拥有 my-repo 的用户 octocat可将此行添加到 Dockerfile:

    LABEL org.opencontainers.image.source=https://github.com/octocat/my-repo
    

    有关详细信息,请参阅 Docker 官方文档中的“标签”和 opencontainers/image-spec 存储库中的“预定义的注释键”。

  2. 构建容器映像。 此示例从当前目录中的 Dockerfile 生成映像,并分配映像名称 hello_docker

    docker build -t hello_docker .
    
  3. (可选)查看刚刚创建的 Docker 映像的详细信息。

    $ docker images
    > REPOSITORY          TAG         IMAGE ID       CREATED         SIZE
    > hello_docker        latest      142e665b1faa   5 seconds ago   125MB
    > redis               latest      afb5e116cac0   3 months ago    111MB
    > alpine              latest      a6215f271958   5 months ago    5.29MB
    
  4. 为 Docker 映像分配名称和托管目标。

    docker tag IMAGE_NAME ghcr.io/NAMESPACE/NEW_IMAGE_NAME:TAG
    

    NAMESPACE 替换为你希望作为包限定范围的个人帐户或组织的名称。

    例如:

    docker tag 38f737a91f39 ghcr.io/octocat/hello_docker:latest
    
  5. 如果尚未向 Container registry 验证,请验证。 有关详细信息,请参阅“使用容器注册表”。

    $ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
    > Login Succeeded
    
  6. 推送容器映像到 Container registry。

    docker push ghcr.io/NAMESPACE/IMAGE-NAME:TAG
    

    例如:

    docker push ghcr.io/octocat/hello_docker:latest
    

在 GitHub 上将存储库与包取消链接

Note

如果将存储库与包取消链接,则会从包的登陆页面中移除存储库信息,并且可能影响访问模式,具体取决于该包是否从存储库继承其访问权限。 有关详细信息,请参阅“配置包的访问控制和可见性”。 此行为不适用于 Apache Maven 包,详见“关于 GitHub Packages 的权限”中所述。

  1. 在 GitHub 上,导航到要取消链接的包的设置页。

  2. 在“包设置”页面上,你将看到一个“存储库源”部分。 如果该部分不存在,则说明包当前未链接到存储库。

  3. 单击“存储库源”部分右上角的回收站图标。

可能存在“存储库源”部分存在,但回收站图标不存在的情况。 这是因为存储库源已在 package.json 文件、.gemspec 文件等打包的代码中定义,但实际上未链接到 GitHub 上的存储库。 要将包链接到存储库,需要执行上一部分中的步骤。

  1. 在对话框中确认要将该存储库与该包取消链接。

将包迁移到另一个存储库

如果当前有一个包链接到存储库,并且想要将其链接到其他存储库,则可以通过取消该包与当前存储库的链接并将其链接到新存储库来完成此操作。

  1. 按照步骤取消链接,请参阅“从 GitHub 上的包取消链接存储库”。
  2. 按照步骤将包链接到新存储库,请参阅“将存储库连接到 GitHub 上的组织范围的包”或“将存储库连接到 GitHub 上的用户范围的包”。