跳至主要内容

将仓库连接到包

您可以在 GitHub.com 上将仓库连接到包。

谁可以使用此功能?

GitHub Packages 可用于 GitHub 免费版、GitHub Pro、GitHub 免费组织版、GitHub Team、GitHub Enterprise Cloud 和 GitHub Enterprise Server 3.0 或更高版本。


使用旧版按仓库付费计划的帐户无法使用私有仓库的 GitHub Packages。此外,使用旧版按仓库付费计划的帐户无法访问支持细粒度权限的注册表,因为这些帐户按仓库计费。有关支持细粒度权限的注册表列表,请参阅“关于 GitHub Packages 的权限”。有关更多信息,请参阅“GitHub 的计划”。

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

将仓库连接到 GitHub 上的用户范围包

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

  2. 在 GitHub 右上角,点击您的个人资料照片,然后点击**您的个人资料**。

    Screenshot of the dropdown menu under @octocat's profile picture. "Your profile" is outlined in dark orange.

  3. 在您的个人资料页面上的页眉中,点击 **包**选项卡。

  4. 搜索并点击您要管理的包的名称。

  5. 在您的包版本下,点击**连接仓库**。

  6. 选择一个仓库链接到包,然后点击**连接仓库**。

将仓库连接到 GitHub 上的组织范围包

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

  2. 在您的组织名称下,点击 **包**选项卡。

    Screenshot of @octo-org's profile page. The "Packages" tab is highlighted with an orange outline.

  3. 搜索并点击您要管理的包的名称。

  4. 在您的包版本下,点击**连接仓库**。

  5. 选择一个仓库链接到包,然后点击**连接仓库**。

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

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

  1. 在您的 Dockerfile 中,添加以下行,将OWNERREPO替换为您的详细信息

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

    例如,如果您是用户octocat并拥有my-repo,您将在您的 Dockerfile 中添加以下行

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

    有关更多信息,请参阅官方 Docker 文档中的“LABEL”和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. 如果您尚未认证到容器注册表,请进行认证。有关更多信息,请参阅“使用容器注册表”。

    $ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
    > Login Succeeded
    
  6. 将您的容器镜像推送到容器注册表。

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

    例如

    docker push ghcr.io/octocat/hello_docker:latest