如何使用Github操作正确推送Docker映像
我正在设置Github操作,以将Docker映像推送到Docker Hub 这是我在目录如何使用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/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是的,我确定。这是正在运行的,这是。奇怪的是,我不知道该告诉你什么-你可以看到它在一个非常相似的设置下对我很好。好奇你是否找到了解决方案?我有一个非常相似的问题