Skip to content

Merge pull request #1339 from lowcoder-org/feature-extension #213

Merge pull request #1339 from lowcoder-org/feature-extension

Merge pull request #1339 from lowcoder-org/feature-extension #213

Workflow file for this run

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 }}