0

我正在尝试通过从 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

不太确定授权问题出在哪里。

4

1 回答 1

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)。

注意:仅将包与回购链接是不够的。

于 2021-12-17T20:52:27.633 回答