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 }}
0 commit comments