我正在尝试编写一个 GitHub actions 脚本来自动构建 docker 镜像,然后在新代码签入主分支时将其推送到 GitHub 容器注册表中。这是我用来尝试登录容器注册表的代码:
name: Build and publish Docker image.
on: [push]
jobs:
publish-docker-image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{github.actor}}
password: ${{secrets.CONTAINER_REG_ACCESS}}
为了了解更多上下文,CONTAINER_REG_ACCESS 密钥是个人访问令牌,尽管它是由我组织的其他成员创建的。
在 GitHub 对我的拉取请求运行自动化测试后,此错误出现在 GitHub 中。
Run docker/login-action@v1
Logging into ghcr.io...
Error: Error response from daemon: Get "https://ghcr.io/v2/": denied: denied
使用 GitHub 操作脚本登录 GitHub 容器注册表的最佳实践是什么?有没有办法使用组织凭据而不是我的个人 GitHub ID 登录?
自从您发布问题以来,已有更新。因此,只要令牌权限正确,您原来的 github 操作片段就应该可以工作。
以下两种方法现在都可以正常工作:
1。使用最新的 docker/login-action@v3
来源:https://github.com/docker/login-action#github-container-registry
name: Build and publish Docker image.
on: [push]
jobs:
publish-docker-image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{github.actor}}
password: ${{ secrets.GITHUB_TOKEN }}
2。或者,使用终端 docker 登录命令
name: Build and publish Docker image.
on: [push]
jobs:
publish-docker-image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Login to GitHub Container Registry
run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login ghcr.io -u ${{github.actor}} --password-stdin