Skip to content

Commit

Permalink
fix: enhance docker image build github action
Browse files Browse the repository at this point in the history
  • Loading branch information
ludomikula committed Sep 3, 2024
1 parent 722480d commit 7a26dc6
Showing 1 changed file with 100 additions and 7 deletions.
107 changes: 100 additions & 7 deletions .github/workflows/docker-images.yml
Original file line number Diff line number Diff line change
@@ -1,42 +1,135 @@
name: Build lowcoder dev image
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
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: Checkout lowcoder from 'dev' branch
- 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: dev
- name: Get commit short SHA
run: echo "SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7)" >> $GITHUB_ENV
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 #${SHORT_SHA}"
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:dev
tags: lowcoderorg/lowcoder-ce-api-service:${{ env.IMAGE_TAG }}

0 comments on commit 7a26dc6

Please sign in to comment.