通过 Github Actions 自动构建 ZFile 镜像并推送到 Docker Hub
上文 提到 ZFile 的 Docker 镜像构建过程,不过需要手动在服务器上执行命令构建并推送,对服务器网络和配置都有一定要求。
前言
上文 提到 ZFile 的 Docker 镜像构建过程,不过需要手动在服务器上执行命令构建并推送,对服务器网络和配置都有一定要求。
本文来介绍如何使用 Github Actions 来自动构建并推送。
创建 Github Actions 配置文件
在 github 项目中 /.github/workflows/ 目录下创建文件 build.yml,yml 文件名称可以随意输入。
name: Build ZFile Docker Image And Push To Docker Hub # workflow 的名字
#on: [push, pull_request] # push 和 pull_request 时会触发
on:
workflow_dispatch: # 手动触发
jobs:
docker:
name: Publish Docker Image # 任务名称
runs-on: ubuntu-18.04 # 执行环境
env:
REPO: ${{ secrets.ENTITY_DOMAIN_REPO }} # 推送到哪个 docker hub 仓库, 如 zhaojun1998/zfile
steps:
- name: Checkout # 检出代码
uses: actions/checkout@v2
- name: Set up QEMU # 设置 QEMU 环境,用来模拟操作系统,用来编译 arm64 镜像和 amd64 镜像
uses: docker/setup-qemu-action@v2
with:
platforms: all
- name: Set up Docker Buildx # 设置 Docker Buildx 环境
id: buildx
uses: docker/setup-buildx-action@v2
with:
version: latest
- name: Inspect builder # 查看 builder 状态
run: |
echo "Name: ${{ steps.buildx.outputs.name }}"
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
echo "Status: ${{ steps.buildx.outputs.status }}"
echo "Flags: ${{ steps.buildx.outputs.flags }}"
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
- name: Login to Docker Registry # 登录到 Docker Registry
run: echo '${{ secrets.DOCKERHUB_PASS }}' | docker login -u ${{ secrets.DOCKERHUB_USER }} --password-stdin
- name: Build Docker Image # 编译镜像并推送,在--platform后面指定需要兼容的平台列表
run: docker buildx build -t $REPO:latest --platform linux/amd64,linux/arm64 --push .配置变量
上方配置文件中所有 ${{ secrets.xxxx }} 都是变量,这个需要在 Github 仓库设置中配置,这样敏感信息,如账号密码,不用写在配置文件中,可以避免信息泄露。
配置方式如图所示:

触发 Actions
推送上方配置文件到登陆 Github 仓库后,点击 Run workflow 即可运行。 
然后经过一两分钟等待后,查看日志,已经运行完成了,在 DockerHub 上也能看生成的结果。

