无法从 GitHub Actions 从 GitHub Packages 拉取

Posted

技术标签:

【中文标题】无法从 GitHub Actions 从 GitHub Packages 拉取【英文标题】:Cannot pull from GitHub Packages from GitHub Actions 【发布时间】:2022-01-19 23:00:17 【问题描述】:

我正在尝试通过从 GitHub Actions 中的 GHCR 拉取来设置测试。 根据文档,应使用GITHUB_TOKEN。 所以我有以下设置:

name: CI
on: push

env:
  REGISTRY: ghcr.io

jobs:
  test:
    runs-on: ubuntu-latest
    permissions:
      packages: read
    steps:
      - name: Log in to the Container registry
        uses: docker/login-action@v1
        with:
          registry: $ env.REGISTRY 
          username: $ github.actor 
          password: $ secrets.GITHUB_TOKEN 
      - name: pull
        run: |
          docker pull ghcr.io/username/terraform-provider-skopeo/alpine:latest

这些步骤的输出是:

Logging into ghcr.io...
Login Succeeded!

Error response from daemon: unauthorized

不太清楚授权问题出在哪里。

【问题讨论】:

【参考方案1】:

您实际上需要明确授予 Repo 的操作权限:https://docs.github.com/en/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions#upgrading-a-workflow-that-accesses-ghcrio

必要的步骤是:

导航到您的包裹着陆页。

在左侧边栏中,单击操作访问。左侧菜单中的“操作访问”选项

为确保您的容器包可以访问您的工作流程,您必须将存储工作流程的存储库添加到您的容器中。单击添加存储库并搜索要添加的存储库。

“添加仓库”按钮

注意:通过操作访问菜单选项将存储库添加到容器与将容器连接到存储库不同。有关详细信息,请参阅“确保对包的工作流访问”和“将存储库连接到包”。

或者,使用“角色”下拉菜单,选择您希望存储库对容器映像具有的默认访问级别。 授予存储库的权限访问级别

打开您的工作流程文件。在登录 ghcr.io 的那一行,确保使用$ secrets.GITHUB_TOKEN (替换 PAT)。

注意:仅将 Package 与 Repo 链接是不够的。

【讨论】:

以上是关于无法从 GitHub Actions 从 GitHub Packages 拉取的主要内容,如果未能解决你的问题,请参考以下文章

GitHub Actions 与 Jenkins 等其他 CI 工具有啥区别?

使用 GitHub Actions 从私有 GitHub 存储库安装 npm 模块

将 Go 项目从 Travis 迁移至 GitHub Actions

如何从 GitHub Actions 克隆 BitBucket 项目?

从 Github Actions 部署后应用程序立即崩溃

GitHub Actions 使用从 shell 设置的变量