-
Notifications
You must be signed in to change notification settings - Fork 184
136 lines (123 loc) · 4.21 KB
/
docker-images.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
name: Build lowcoder docker images
on:
workflow_dispatch:
inputs:
imageTag:
type: choice
description: 'Choose a tag for built docker image(s)'
required: true
default: 'latest'
options:
- latest
- test
- 2.4.6
build_allinone:
type: boolean
description: 'Build the All-In-One image'
default: true
build_frontend:
type: boolean
description: 'Build the Frontend image'
default: true
build_nodeservice:
type: boolean
description: 'Build the Node service image'
default: true
build_apiservice:
type: boolean
description: 'Build the API service image'
default: true
push:
branches: dev
paths:
- 'client/**'
- 'server/**'
- 'deploy/docker/**'
release:
types: [released]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set environment variables
shell: bash
run: |
# Get the short SHA of last commit
echo "SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7)" >> "${GITHUB_ENV}"
# Get branch name - we don't use github.ref_head_name since we don't build on PRs
echo "BRANCH_NAME=${{ github.ref_name }}" >> "${GITHUB_ENV}"
# Set docker image tag
echo "IMAGE_TAG=${{ inputs.imageTag || github.ref_name }}" >> "${GITHUB_ENV}"
# Control which images to build
echo "BUILD_ALLINONE=${{ inputs.build_allinone || true }}" >> "${GITHUB_ENV}"
echo "BUILD_FRONTEND=${{ inputs.build_frontend || true }}" >> "${GITHUB_ENV}"
echo "BUILD_NODESERVICE=${{ inputs.build_nodeservice || true }}" >> "${GITHUB_ENV}"
echo "BUILD_APISERVICE=${{ inputs.build_apiservice || true }}" >> "${GITHUB_ENV}"
- name: Checkout lowcoder source
uses: actions/checkout@v4
with:
ref: ${{ env.BRANCH_NAME }}
- name: Log into Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_LOGIN }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Setup Docker Buildx with cloud driver
uses: docker/setup-buildx-action@v3
with:
version: "lab:latest"
driver: cloud
endpoint: "lowcoderorg/lowcoder-cloud-builder"
- name: Build and push the all-in-one image
if: ${{ env.BUILD_ALLINONE == 'true' }}
uses: docker/build-push-action@v6
env:
NODE_ENV: production
with:
file: ./deploy/docker/Dockerfile
build-args: |
REACT_APP_ENV=production
REACT_APP_COMMIT_ID="dev #${{ env.SHORT_SHA }}"
platforms: |
linux/amd64
linux/arm64
push: true
tags: lowcoderorg/lowcoder-ce:${{ env.IMAGE_TAG }}
- name: Build and push the frontend image
if: ${{ env.BUILD_FRONTEND == 'true' }}
uses: docker/build-push-action@v6
env:
NODE_ENV: production
with:
file: ./deploy/docker/Dockerfile
target: lowcoder-ce-frontend
build-args: |
REACT_APP_ENV=production
REACT_APP_COMMIT_ID="dev #${{ env.SHORT_SHA }}"
platforms: |
linux/amd64
linux/arm64
push: true
tags: lowcoderorg/lowcoder-ce-frontend:${{ env.IMAGE_TAG }}
- name: Build and push the node service image
if: ${{ env.BUILD_NODESERVICE == 'true' }}
uses: docker/build-push-action@v6
with:
file: ./deploy/docker/Dockerfile
target: lowcoder-ce-node-service
platforms: |
linux/amd64
linux/arm64
push: true
tags: lowcoderorg/lowcoder-ce-node-service:${{ env.IMAGE_TAG }}
- name: Build and push the API service image
if: ${{ env.BUILD_APISERVICE == 'true' }}
uses: docker/build-push-action@v6
with:
file: ./deploy/docker/Dockerfile
target: lowcoder-ce-api-service
platforms: |
linux/amd64
linux/arm64
push: true
tags: lowcoderorg/lowcoder-ce-api-service:${{ env.IMAGE_TAG }}