在上一节中,我们创建了一个 PAT 并将其添加到 GitHub,以确保我们可以从任何工作流访问 Docker Hub。现在,让我们设置 GitHub Actions 工作流程,以在 Hub 中构建和存储我们的图像。我们可以通过创建两个 Docker 操作来实现这一点:
1.第一个操作使我们能够使用存储在 GitHub 存储库中的机密登录到 Docker Hub。
2.第二个是构建和推送操作。
在这个例子中,让我们将推送标志设置true为我们也想推送。然后我们将添加一个标签来指定始终转到最新版本。最后,我们将回显图像摘要以查看推送的内容。
要设置工作流程:
1.转到您在 GitHub 中的存储库,然后单击操作>新建工作流。
2.单击自行设置工作流并添加以下内容:
首先,我们将命名此工作流:
name: CI to Docker Hub
然后,我们将选择何时运行此工作流。在我们的示例中,我们将针对项目主分支的每次推送执行此操作:
on:
push:
branches: [ main ]
现在,我们需要指定我们实际想要在我们的操作中发生的事情(什么作业),我们将添加我们的构建版本并选择它在可用的最新 Ubuntu 实例上运行:
jobs:
build:
runs-on: ubuntu-latest
现在,我们可以添加所需的步骤。第一个在 $GITHUB_WORKSPACE 下检出我们的存储库,以便我们的工作流可以访问它。第二种是使用我们的 PAT 和用户名登录到 Docker Hub。第三个是 Builder,该动作通过一个简单的 Buildx 动作在幕后使用 BuildKit,我们也将设置它
steps:
- name: Check Out Repo
uses: actions/checkout@v2
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: ./
file: ./Dockerfile
push: true
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/simplewhale:latest
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
现在,让工作流第一次运行,然后调整 Dockerfile 以确保 CI 正在运行并推送新的图像更改: