在前面的步骤中,我们已经创建了个人访问令牌(PAT),并将其保存到 GitHub 仓库的机密中,这样工作流就可以访问 Docker Hub。接下来,可以通过 GitHub Actions 自动完成镜像的构建与推送。
整个流程主要包含两个关键操作:
- 使用保存在 GitHub Secrets 中的凭据登录 Docker Hub;
- 构建镜像并将其推送到 Docker Hub。
在这个示例里,构建步骤会启用推送功能,并为镜像添加 latest 标签。最后还会输出镜像摘要,方便确认本次推送的内容。
创建 GitHub Actions 工作流
可以按照下面的步骤完成配置:
- 进入 GitHub 仓库页面,点击
Actions>New workflow。 - 选择自行创建工作流,然后填入对应的 YAML 配置。
首先,为工作流设置一个名称:
name: CI to Docker Hub
然后定义触发条件。这里的示例是在主分支每次发生推送时执行:
on: push: branches: [ main ]
接着定义具体任务。这里创建一个名为 build 的任务,并让它在最新的 Ubuntu 运行环境中执行:
jobs: build: runs-on: ubuntu-latest
工作流步骤说明
在任务中,需要依次添加以下步骤:
- 检出仓库代码,让工作流可以访问项目文件;
- 使用 Docker Hub 用户名和访问令牌登录;
- 启用 Docker 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 做一些修改并提交到主分支,以确认持续集成流程是否能够自动构建并推送新的镜像版本。

