Merge pull request #66 from atorber/v3.0 #46
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# docker-image.yml | |
name: Publish Docker image # workflow名称,可以在Github项目主页的【Actions】中看到所有的workflow | |
on: # 配置触发workflow的事件 | |
push: | |
branches: # 添加这一行来指定触发分支 | |
- 'main' # 两个星号代表任意分支 | |
tags: # tag更新时触发此workflow | |
- '*' | |
jobs: # workflow中的job | |
push_to_registry: # job的名字 | |
name: Push Docker image to Docker Hub | |
runs-on: ubuntu-latest # job运行的基础环境 | |
strategy: | |
matrix: | |
include: | |
- platform: linux/amd64 | |
tag_suffix: amd64 | |
- platform: linux/arm/v7 | |
tag_suffix: armv7 | |
- platform: linux/arm64 | |
tag_suffix: arm64 | |
steps: # 一个job由一个或多个step组成 | |
- name: Check out the repo | |
uses: actions/checkout@v2 # 官方的action,获取代码 | |
- name: Install jq | |
run: sudo apt-get install jq | |
- name: Extract package version | |
id: package_version | |
run: echo "::set-output name=VERSION::$(jq -r '.version' package.json)" | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Log in to Docker Hub | |
uses: docker/login-action@v1 # 三方的action操作, 执行docker login | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} # 配置dockerhub的认证,在Github项目主页 【Settings】 -> 【Secrets】 添加对应变量 | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Extract metadata (tags, labels) for Docker | |
id: meta | |
uses: docker/metadata-action@v3 # 抽取项目信息,主要是镜像的tag | |
with: | |
images: atorber/chatflow-worker | |
- name: Build and push Docker image | |
uses: docker/build-push-action@v2 # docker build & push | |
with: | |
context: . | |
file: ./Dockerfile | |
platforms: ${{ matrix.platform }} | |
tags: | | |
atorber/chatflow:${{ matrix.tag_suffix }}-${{ steps.package_version.outputs.VERSION }} | |
atorber/chatflow:${{ matrix.tag_suffix }}-latest | |
push: true | |
labels: ${{ steps.meta.outputs.labels }} |