如何使用Github Actions登录到Github容器注册表

3
我正在尝试编写一个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 上,在执行我的拉取请求的自动化测试之后。
Run docker/login-action@v1
Logging into ghcr.io...
Error: Error response from daemon: Get "https://ghcr.io/v2/": denied: denied

如何使用GitHub actions脚本登录GitHub容器注册表的最佳实践是什么?是否有一种方法可以使用组织凭据而不是我的个人GitHub ID进行登录?


今天也在想同样的问题。如果 Docker Hub 上的存储库归属于一个您不想使用其个人访问令牌来推送镜像的组织,则该怎么办呢? - undefined
你试过使用 password: ${{secrets.GITHUB_TOKEN}} 吗? - undefined
这个回答解决了你的问题吗?如何使用Github Actions登录Docker注册表 - undefined
1个回答

0
你发布问题后有更新。只要令牌权限正确,你的原始 GitHub Action 代码片段应该可以正常工作。
以下两种方法现在都可以正常使用:
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 login命令。
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

在这里查看另一个答案:https://dev59.com/DVMH5IYBdhLWcg3wzzAd#58229226

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接