如何使用Github操作正确推送Docker映像

如何使用Github操作正确推送Docker映像,docker,github,github-actions,dockerhub,Docker,Github,Github Actions,Dockerhub,我正在设置Github操作,以将Docker映像推送到Docker Hub 这是我在目录.github/workflows/ name: Publish Docker image on: push: branches: master jobs: push_to_registry: name: Push Docker image to Docker Hub runs-on: ubuntu-latest steps: - nam

我正在设置Github操作,以将Docker映像推送到Docker Hub

这是我在目录
.github/workflows/

name: Publish Docker image

on:
  push:
    branches: master

jobs:
  push_to_registry:
    name: Push Docker image to Docker Hub
    runs-on: ubuntu-latest
    steps:
      -
        name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      -
        name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      -
        name: Build and push
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          push: true
          tags: user/app:latest
      -
        name: Image digest
        run: echo ${{ steps.docker_build.outputs.digest }}
在测试了我的fork分支中的操作之后,我将该分支合并到主回购中。令我惊讶的是,登录步骤失败,在Github操作日志中显示以下错误

Run docker/login-action@v1
  with:
    logout: true
Error: Username and password required
起初,我以为我可能错误地定义了(甚至没有定义)主回购协议中的秘密,但在向octokit提出请求后,我发现它们就在那里

{
  total_count: 2,
  secrets: [
    {
      name: 'DOCKER_PASSWORD',
      created_at: '2020-11-04T15:28:55Z',
      updated_at: '2020-11-16T13:11:27Z'
    },
    {
      name: 'DOCKER_USERNAME',
      created_at: '2020-11-04T15:28:55Z',
      updated_at: '2020-11-16T13:11:27Z'
    }
  ]
}

我猜是docker/登录-action@v1未使用
后提供的用户名和密码以及:
关键字。我对此感到非常困惑,因为它确实在我的fork分支上起作用,我不明白为什么
with:
会发送我没有设置的关键字
logout:true


有人对此有更深入的了解吗?

您能检查一下存储库的设置中是否有这样的秘密:

还有,当你说

在测试了我的fork分支中的操作之后,我将该分支合并到主回购中

这是否意味着主回购协议也是你的? 因为秘密不会在回购协议之间转移。如果您转移了另一个用户的存储库,并希望贡献需要保密的工作流更改,则主回购的所有者必须添加具有相同名称的保密信息。
此外,在拉取请求工作流运行中不使用机密。因此,只有在将更改合并到存储库后,您才能看到它是否工作。

对我来说很好。我还在该步骤的输出中看到
logout:true
,因此可能是默认值:,但推送还是成功了,我猜这是针对运行后清理步骤。你确定它正在运行你认为是的工作流吗?@jornsharpe是的,我确定。这是正在运行的,这是。奇怪的是,我不知道该告诉你什么-你可以看到它在一个非常相似的设置下对我很好。好奇你是否找到了解决方案?我有一个非常相似的问题