如何使用 Github actions 正确推送 Docker 镜像

问题描述 投票:0回答:3

我正在设置一个 Github 操作,以按照 docker/build-push-action@v2 的 Github 官方 README.md 将 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 }}
在测试了我的分支分支中的操作后,我将该分支合并到主存储库。令我惊讶的是,登录步骤失败,在 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/login-action@v1 没有使用 

with:

 关键字后提供的用户名和密码。我对此感到非常困惑,因为它确实在我的 fork 分支上工作,并且不明白为什么 
with:
 发送了关键字 
logout: true
 而不是我没有设置的。

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

docker github github-actions dockerhub
3个回答
3
投票
您能否检查一下存储库的设置中的秘密是否像这样:

enter image description here

另外,当你说

测试了我的 fork 分支中的操作后,我将该分支合并到主存储库。

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


2
投票
我遇到了同样的问题,请检查你在哪里提供你的秘密,现在 GitHub 有两种类型的秘密,你应该使用如图所示的操作。如果您使用依赖机器人。

enter image description here enter image description here enter image description here


0
投票
使用

docker/[email protected]

 以及来自 DockerHub 的用户名和 PAT 对我有用。从分支运行时,早期版本存在问题。

© www.soinside.com 2019 - 2024. All rights reserved.