目标 每当有新的 git tag 推送到 GitHub 时执行对应工作流; 工作流中构建 Docker 镜像并推送到 Docker Hub
Github Actions 介绍
Automate, customize, and execute your software development workflows right in your repository with GitHub Actions. You can discover, create, and share actions to perform any job you’d like, including CI/CD, and combine actions in a completely customized workflow.
通过 GitHub Actions 自动化执行自定义软件开发工作流. 可以在 Github Actions 市场 发现, 创建及共享任何你喜欢的Job.
术语 GitHub Actions 有一些自己的术语: workflow (工作流): 持续集成一次运行的过程, 就是一个 workflow. job (任务): 一个 workflow 由一个或多个 jobs 构成, 含义是一次持续集成的运行, 可以完成多个任务. step(步骤): 每个 job 由多个 step 构成, 一步步完成. action (动作): 每个 step 可以依次执行一个或多个命令(action).
定义工作流 Docker 相关 Action https://github.com/marketplace?type=actions&query=docker
配置文件
./.github/workflows/docker.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 name: Build Docker Image on: push: tags: - v* env: APP_NAME: httpproxy DOCKERHUB_REPO: isayme/httpproxy jobs: main: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - 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.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Generate App Version run: echo APP_VERSION=`git describe --tags --always` >> $GITHUB_ENV - name: Build and push id: docker_build uses: docker/build-push-action@v2 with: push: true platforms: | linux/386 linux/amd64 linux/arm/v6 linux/arm/v7 linux/arm64/v8 build-args: | APP_NAME=${{ env.APP_NAME }} APP_VERSION=${{ env.APP_VERSION }} tags: | ${{ env.DOCKERHUB_REPO }}:latest ${{ env.DOCKERHUB_REPO }}:${{ env.APP_VERSION }}
参考资料