Skip to content

Commit e44fb84

Browse files
refactor: add build_and_push github action
1 parent 67b2084 commit e44fb84

File tree

2 files changed

+108
-56
lines changed

2 files changed

+108
-56
lines changed
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
name: build-and-push
2+
3+
run-name: 构建镜像并推送仓库 ${{ github.event.inputs.dockerImageTag }} (${{ github.event.inputs.registry }}) (${{ github.event.inputs.architecture }})
4+
5+
on:
6+
workflow_dispatch:
7+
inputs:
8+
branch:
9+
description: 'Branch'
10+
required: true
11+
default: "main"
12+
dockerImageTag:
13+
description: 'Image Tag'
14+
default: 'v0.9.0'
15+
required: true
16+
dockerImageTagWithLatest:
17+
description: '是否发布latest tag(正式发版时选择,测试版本切勿选择)'
18+
default: false
19+
required: true
20+
type: boolean
21+
architecture:
22+
description: 'Architecture'
23+
required: true
24+
default: 'linux/amd64'
25+
type: choice
26+
options:
27+
- linux/amd64
28+
- linux/arm64
29+
- linux/amd64,linux/arm64
30+
registry:
31+
description: 'Push To Registry'
32+
required: true
33+
default: 'aliyun-registry'
34+
type: choice
35+
options:
36+
- aliyun-registry
37+
- dockerhub
38+
- dockerhub, aliyun-registry
39+
40+
jobs:
41+
build-and-push-to-aliyun-registry:
42+
if: ${{ contains(github.event.inputs.registry, 'aliyun') }}
43+
runs-on: ubuntu-latest
44+
steps:
45+
- name: Checkout
46+
uses: actions/checkout@v4
47+
with:
48+
ref: ${{ github.event.inputs.branch }}
49+
- name: Prepare
50+
id: prepare
51+
run: |
52+
DOCKER_IMAGE=${{ secrets.ALIYUN_REGISTRY_HOST }}/maxkb/maxkb
53+
DOCKER_PLATFORMS=${{ github.event.inputs.architecture }}
54+
TAG_NAME=${{ github.event.inputs.dockerImageTag }}
55+
TAG_NAME_WITH_LATEST=${{ github.event.inputs.dockerImageTagWithLatest }}
56+
if [[ ${TAG_NAME_WITH_LATEST} == 'true' ]]; then
57+
DOCKER_IMAGE_TAGS="--tag ${DOCKER_IMAGE}:${TAG_NAME} --tag ${DOCKER_IMAGE}:${TAG_NAME%%.*} --tag ${DOCKER_IMAGE}:latest"
58+
else
59+
DOCKER_IMAGE_TAGS="--tag ${DOCKER_IMAGE}:${TAG_NAME}"
60+
fi
61+
echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} --memory-swap -1 \
62+
--build-arg DOCKER_IMAGE_TAG=${{ github.event.inputs.dockerImageTag }} --build-arg BUILD_AT=$(TZ=Asia/Shanghai date +'%Y-%m-%dT%H:%M') --build-arg GITHUB_COMMIT=`git rev-parse --short HEAD` --no-cache \
63+
${DOCKER_IMAGE_TAGS} .
64+
- name: Set up Docker Buildx
65+
uses: crazy-max/ghaction-docker-buildx@v3
66+
- name: Login to Aliyun Registry
67+
uses: docker/login-action@v2
68+
with:
69+
registry: registry.cn-qingdao.aliyuncs.com
70+
username: ${{ secrets.ALIYUN_REGISTRY_USERNAME }}
71+
password: ${{ secrets.ALIYUN_REGISTRY_PASSWORD }}
72+
- name: Docker Buildx (build-and-push)
73+
run: |
74+
docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }}
75+
76+
build-and-push-to-dockerhub:
77+
if: ${{ contains(github.event.inputs.registry, 'dockerhub') }}
78+
runs-on: ubuntu-latest
79+
steps:
80+
- name: Checkout
81+
uses: actions/checkout@v4
82+
with:
83+
ref: ${{ github.event.inputs.branch }}
84+
- name: Prepare
85+
id: prepare
86+
run: |
87+
DOCKER_IMAGE=dataease/sqlbot
88+
DOCKER_PLATFORMS=${{ github.event.inputs.architecture }}
89+
TAG_NAME=${{ github.event.inputs.dockerImageTag }}
90+
TAG_NAME_WITH_LATEST=${{ github.event.inputs.dockerImageTagWithLatest }}
91+
if [[ ${TAG_NAME_WITH_LATEST} == 'true' ]]; then
92+
DOCKER_IMAGE_TAGS="--tag ${DOCKER_IMAGE}:${TAG_NAME} --tag ${DOCKER_IMAGE}:${TAG_NAME%%.*} --tag ${DOCKER_IMAGE}:latest"
93+
else
94+
DOCKER_IMAGE_TAGS="--tag ${DOCKER_IMAGE}:${TAG_NAME}"
95+
fi
96+
echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} --memory-swap -1 \
97+
--build-arg DOCKER_IMAGE_TAG=${{ github.event.inputs.dockerImageTag }} --build-arg BUILD_AT=$(TZ=Asia/Shanghai date +'%Y-%m-%dT%H:%M') --build-arg GITHUB_COMMIT=`git rev-parse --short HEAD` --no-cache \
98+
${DOCKER_IMAGE_TAGS} .
99+
- name: Set up Docker Buildx
100+
uses: crazy-max/ghaction-docker-buildx@v3
101+
- name: Login to Docker Hub
102+
uses: docker/login-action@v3
103+
with:
104+
username: ${{ secrets.DOCKERHUB_USERNAME }}
105+
password: ${{ secrets.DOCKERHUB_TOKEN }}
106+
- name: Docker Buildx (build-and-push)
107+
run: |
108+
docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }}

.github/workflows/build_docker.yml

Lines changed: 0 additions & 56 deletions
This file was deleted.

0 commit comments

Comments
 (0)