问题标签 [github-container-registry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
607 浏览

github-actions - 我应该使用个人访问令牌从 GitHub Actions 访问 ghcr 吗?

我正在探索使用 GitHub 容器注册表 (ghcr) 来存储构建在我的持续集成 (CI) 管道中的 Docker 映像,这些管道构建在 GitHub Actions 中。

我正在阅读Migrating to GitHub Container Registry for Docker 映像,其中指出:

将您的新容器注册表身份验证个人访问令牌 (PAT) 添加为 GitHub Actions 密码。GitHub Container Registry 不支持将 GITHUB_TOKEN 用于您的 PAT,因此您必须使用不同的自定义变量,例如CR_PAT.

在那篇文章的前面虽然有一个指向GitHub Actions 的安全强化 的链接,其中指出:

您永远不应使用您自己帐户中的个人访问令牌。这些令牌授予对您有权访问的组织内的所有存储库以及您用户帐户中的所有个人存储库的访问权限。这间接地授予工作流所在存储库的所有写访问用户的广泛访问权限。此外,如果您以后离开组织,使用此令牌的工作流将立即中断,并且调试此问题可能具有挑战性。

如果使用个人访问令牌,它应该是为新帐户生成的令牌,该帐户仅被授予访问工作流所需的特定存储库的权限。请注意,此方法不可扩展,应避免使用替代方法,例如部署密钥。

这些引述似乎自相矛盾。第一个是告诉我在 CI 管道中使用 PAT 对 ghcr 进行身份验证,另一个似乎告诉我不应该这样做。

我是正确的,他们是矛盾的还是我误解了?
从 GitHub Action 工作流程对 ghcr 进行身份验证的正确操作流程是什么?

0 投票
0 回答
237 浏览

docker - 我坚持将 Docker 图像推送到 GitHub Container Repository

我正在尝试将 Docker 映像推送到ghcr.io. 但我被困住了。

ghcr.io我在 GitHub 上创建了一个操作,使用以下代码登录:

它作为我的 GitHub 操作中的一个成功步骤通过了。我看到这个回复:

登录成功

然后我尝试使用这个命令推送:

我的组织是私人的。它向我显示了这个错误:

拒绝:不允许安装以创建组织包
错误:过程已完成,退出代码为 1。

我去ghcr.io手动创建存储库(就像我们在 Docker Hub 上所做的那样),但它的导航没有很好的用户体验,至少在我看来。我在他们的主页上单击Get Started ,它会将我带到文档页面。当我在此处单击Quick Start时,它会显示发布 NPM 包的示例。在那里,我看到您应该转到您的存储库容器登录页面,但我看不到单击以导航到那里的链接或任何地方都没有菜单项。

我也找不到如何使用文档创建这个包存储库

我应该如何进行?

0 投票
1 回答
788 浏览

github - 如何从 ghcr.io 查看(不下载)docker 镜像

我正在将 docker 图像发布到 GitHub 容器注册表 (ghcr.io)。

这样做的过程:

  1. 构建组件。
  2. 构建包含组件的 docker 镜像。
  3. 将 docker 镜像上传到 ghcr.io。
  4. 部署泊坞窗图像。
  5. 在 docker 镜像上运行集成测试。

有时第 4 步或第 5 步会返回一个无法从 Docker 映像中解决的错误,在问题解决后,我需要重新部署并重新测试工件。

如果发生这种情况,构建组件的过程(包括 junit 测试)会很痛苦,因为 Docker 映像已经构建并存在于 ghcr.io 上。

有没有办法可以查看 ghcr.io 中是否存在标记的 Docker 映像?

0 投票
2 回答
174 浏览

docker - 在代码空间中预配置容器注册表

我正在尝试在 CodeSpace 中预配置一个私有容器注册表,以便研讨会参与者可以使用它。根据文档,这一切都非常简单,但看起来我遗漏了一些东西,因为它不起作用,并且文档不清楚我在接收端需要期待什么。

到目前为止我所做的:

  • 我有一个继承自 univesal-linux:1.6.4 的自定义 CodeSpace 容器映像
  • 我已经配置了 3 个记录的变量:
    • GH_CONTAINER_REGISTRY_SERVER=ghcr.io
    • GH_CONTAINER_REGISTRY_USER=jessehouwing
    • GH_CONTAINER_REGISTRY_PASSWORD=具有包(读取)权限的 PAT

在此处输入图像描述

  • 我已经重建了代码空间
  • 我尝试了不同的前缀GH_,但无济于事。

如果我正确阅读了文档,这应该确保 docker 可以使用我的凭据从 ghcr 中提取,但我得到的只是一个错误:

我在 vscode-container 存储库中搜索了我可能必须在自定义容器上配置的内容的提示,但我并没有发现任何错误。

自定义容器dockerfile:

我在标准的 vscode 容器中尝试过,看到了相同的行为。我一定做错了什么。

这些秘密作为一组存储库秘密注册在同一个存储库中,我正在从同一个存储库启动代码空间:

从 repo 启动代码空间

存储在同一存储库设置中的秘密

0 投票
1 回答
72 浏览

docker - 为什么 GitHub 操作无法推送 docker 镜像?

我有很多 GitHub 操作将构建的 docker 图像推送到GitHub Container Repository

基本上,我所做的是在我的工作中有两个步骤:

这适用于我所有的组织和存储库。

但是,对于一个非常特殊的存储库,我收到此错误:

我怎样才能解决这个问题?

0 投票
0 回答
93 浏览

jenkins - 与 Jenkins 和 GHCR 合作;github 应用程序可以通过身份验证来推送 docker 映像吗?

我们正在尝试使用 Jenkins 设置工作流,以使用 github 上的代码构建 docker 图像并将其推回它。

我们已经为 jenkins 设置了一个 github 应用程序,用于访问代码存储库/分支/PR,但似乎虽然我已授予 github 应用程序“包”权限,但我无法使用相同的凭据来推送包。我没有设法使用凭据进行“docker login”,也没有使用 jenkins 文件中的“withRegistry”包装器。

我们确实在环境中设置了 GHCR_Credentials

然后我们尝试使用以下方式推送构建的图像:

它失败了,我得到一个错误:

是否可以使用凭据来推送 docker 图像?如果是这样,怎么做?否则我将不得不默认使用 PAT,但它将绑定到我的帐户而不是组织,这是不切实际的。

0 投票
1 回答
65 浏览

github - github`registry_package`事件不会触发

我设法在 1 个私有存储库上创建了两个操作:

  • 第一个构建镜像并将 docker 镜像推送到 GitHub Container Registry
  • 第二个需要在更新的镜像发布到 GitHub 容器注册表并部署镜像时触发

问题是第二个它没有被触发并且没有运行。我使用 GitHub Repo Token,我发现表明应该使用个人访问令牌来触发新的工作流程。这是真正的问题还是有一些解决方法?就我个人而言,我不想把我的 github 令牌放在那里。

作为参考这里是第一个 github 操作的 yml 代码:

这是第二个的 yml,一旦第一个将新图像发布到注册表,就需要触发它:

0 投票
0 回答
120 浏览

docker - 并非所有 Docker 映像都显示在 GitHub 容器注册表上

对于不存在的存储库,我在 GitHub 容器存储库 ( https://github.com/orgs/{OWNER}/packages )上看不到 docker 映像。

我说的是GitHub 容器注册表

如何重现

如果您repository-A在 GitHub 上创建存储库,然后推送 docker image docker push ghcr.io/OWNER/repository-A:latest。然后我可以转到项目包(在 GitHub Web 应用程序上)并将该图像视为容器包或其他任何东西。

但是,如果您推送 docker 图像并将其名称设置为与您拥有的任何存储库名称不同的名称,例如 ( docker push ghcr.io/OWNER/unknown-repo:latest),您将无法在 GitHub Web 应用程序的任何地方看到该图像。您将能够提取此图像并使用不同的标签再次推送,但是让我们package explorer在 Web 应用程序上调用它时您将无法看到它,例如(https://github.com/orgs/{OWNER}/packages) .

我只有这个问题吗?如何解决?谢谢

0 投票
1 回答
252 浏览

docker - 无法使用 GITHUB_TOKEN 登录 GitHub Container Registry

我尝试构建 docker 映像并将其推送到 GHCR(GitHub 容器注册表)。

docker/login-action@v1不幸的是,在使用 GITHUB_TOKEN 作为密码的操作的登录过程中,我收到了一个错误。

整个工作流程 yaml 清单。

错误截图。

在此处输入图像描述

更新

设置工作阶段。

登录到 GitHub Container 注册阶段。

笔记

我使用的存储库是私有的,属于我正在创建的组织。

GitHub 文档说建议使用 GITHUB_TOKEN 而不是 PAT。https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry

要在 GitHub Actions 工作流程中对容器注册表进行身份验证,请使用 GITHUB_TOKEN 以获得最佳安全性和体验。如果您的工作流程使用个人访问令牌 (PAT) 对 ghcr.io 进行身份验证,那么我们强烈建议您更新您的工作流程以使用 GITHUB_TOKEN。

0 投票
1 回答
106 浏览

docker - 用于将容器推送到 Github Container Registry 的 Github Actions 工作流程因“未经身份验证”而失败

我想构建一个 docker 容器并将其从我的 Github 存储库推送到 Github 容器注册表。也许值得一提的是存储库位于一个组织中。这是我的 Github Action 工作流程:

通过login,但build失败并出现以下错误:

我查找了许多解决方案,但没有一个有效。我错过了什么吗?