Skip to main content
Skip to content

将仓库连接到软件包

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

谁可以使用此功能?

Enterprise Managed Users 可以发布到组织的命名空间。 这些用户无法将包发布到其帐户的命名空间中,因为没有个人存储分配。 有关 Enterprise Managed Users 的更多信息,请参阅 关于 Enterprise Managed Users

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

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

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

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

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

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

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

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

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

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

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

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

    @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 官方文档中的标签以及 仓库中的预定义的注释键

  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 上将存储库与包取消链接

注意

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

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

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

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

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

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

将包迁移到另一个存储库

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

  1. 按照以下步骤可以取消链接,请参阅在 GitHub 上取消链接存储库和包
  2. 按照步骤将包链接到新仓库,请参阅将仓库连接到 GitHub 上的组织作用域的包将仓库连接到 GitHub 上的用户作用域的包