无法从 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