mirror of
https://github.com/ToolJet/ToolJet
synced 2026-04-21 21:47:17 +00:00
357 lines
14 KiB
YAML
357 lines
14 KiB
YAML
name: ToolJet Edition docker images builds
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
|
|
jobs:
|
|
build-tooljet-image-for-ce-edtion:
|
|
runs-on: ubuntu-latest
|
|
if: "${{ github.event.release }}"
|
|
|
|
steps:
|
|
- name: Free up disk space
|
|
run: |
|
|
sudo rm -rf /usr/share/dotnet
|
|
sudo rm -rf /opt/ghc
|
|
sudo rm -rf /usr/local/share/boost
|
|
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
|
sudo docker system prune -af
|
|
sudo apt-get clean
|
|
df -h
|
|
|
|
- name: Checkout code to main for pre-release CE edition
|
|
if: "!contains(github.event.release.tag_name, '-lts')"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: refs/heads/main
|
|
|
|
- name: Checkout code to LTS for CE LTS edition
|
|
if: "contains(github.event.release.tag_name, '-lts')"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: refs/heads/lts-3.16
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Docker Login
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Build and Push Docker image for pre-release tag
|
|
if: "!contains(github.event.release.tag_name, '-lts')"
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
file: docker/ce-production.Dockerfile
|
|
push: true
|
|
tags: tooljet/tooljet-ce:${{ github.event.release.tag_name }},tooljet/tooljet-ce:ce-latest
|
|
platforms: linux/amd64
|
|
cache-from: type=gha,scope=ce
|
|
cache-to: type=gha,scope=ce,mode=min
|
|
env:
|
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Build and Push Docker image for LTS tag
|
|
if: "contains(github.event.release.tag_name, '-lts')"
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
file: docker/ce-production.Dockerfile
|
|
push: true
|
|
tags: tooljet/tooljet-ce:${{ github.event.release.tag_name }},tooljet/tooljet-ce:ce-lts-latest
|
|
platforms: linux/amd64
|
|
cache-from: type=gha,scope=ce
|
|
cache-to: type=gha,scope=ce,mode=min
|
|
env:
|
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Send Slack Notification
|
|
run: |
|
|
# Determine release type and tags
|
|
if [[ "${{ github.event.release.tag_name }}" == *"-lts"* ]]; then
|
|
release_type="🔒 LTS Release"
|
|
branch="lts-3.16"
|
|
tags="tooljet/tooljet-ce:${{ github.event.release.tag_name }}, tooljet/tooljet-ce:ce-lts-latest"
|
|
else
|
|
release_type="🔄 Pre-release"
|
|
branch="main"
|
|
tags="tooljet/tooljet-ce:${{ github.event.release.tag_name }}, tooljet/tooljet-ce:ce-latest"
|
|
fi
|
|
|
|
# Build message based on job status
|
|
if [[ "${{ job.status }}" == "success" ]]; then
|
|
message="✅ *ToolJet Community Edition Published*\nVersion: \`${{ github.event.release.tag_name }}\`\nType: ${release_type}\nBranch: \`${branch}\`\nTags: \`${tags}\`"
|
|
else
|
|
message="❌ *ToolJet Community Edition Build Failed*\nVersion: \`${{ github.event.release.tag_name }}\`\nType: ${release_type}\nBranch: \`${branch}\`\nStatus: Build or push failed"
|
|
fi
|
|
|
|
curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
|
build-tooljet-image-for-ee-edtion:
|
|
runs-on: ubuntu-latest
|
|
if: "${{ github.event.release }}"
|
|
|
|
steps:
|
|
- name: Free up disk space
|
|
run: |
|
|
sudo rm -rf /usr/share/dotnet
|
|
sudo rm -rf /opt/ghc
|
|
sudo rm -rf /usr/local/share/boost
|
|
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
|
sudo docker system prune -af
|
|
sudo apt-get clean
|
|
df -h
|
|
|
|
- name: Checkout code to main for pre-release EE edition
|
|
if: "!contains(github.event.release.tag_name, '-lts')"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: refs/heads/main
|
|
|
|
- name: Checkout code to LTS for EE LTS edition
|
|
if: "contains(github.event.release.tag_name, '-lts')"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: refs/heads/lts-3.16
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Docker Login
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Build and Push Docker image for pre-release tag
|
|
if: "!contains(github.event.release.tag_name, '-lts')"
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
build-args: |
|
|
CUSTOM_GITHUB_TOKEN=${{ secrets.CUSTOM_GITHUB_TOKEN }}
|
|
BRANCH_NAME=main
|
|
file: docker/pre-release/ee/ee-production.Dockerfile
|
|
push: true
|
|
tags: tooljet/tooljet-ee:${{ github.event.release.tag_name }},tooljet/tooljet-ee:ee-latest,tooljet/tooljet:ee-latest,tooljet/tooljet:${{ github.event.release.tag_name }}
|
|
platforms: linux/amd64
|
|
cache-from: type=gha,scope=ee
|
|
cache-to: type=gha,scope=ee,mode=min
|
|
env:
|
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Build and Push Docker image for LTS tag
|
|
if: "contains(github.event.release.tag_name, '-lts')"
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
build-args: |
|
|
CUSTOM_GITHUB_TOKEN=${{ secrets.CUSTOM_GITHUB_TOKEN }}
|
|
BRANCH_NAME=lts-3.16
|
|
file: docker/LTS/ee/ee-production.Dockerfile
|
|
push: true
|
|
tags: tooljet/tooljet-ee:${{ github.event.release.tag_name }},tooljet/tooljet-ee:ee-lts-latest,tooljet/tooljet:ee-lts-latest,tooljet/tooljet:${{ github.event.release.tag_name }}
|
|
platforms: linux/amd64
|
|
cache-from: type=gha,scope=ee
|
|
cache-to: type=gha,scope=ee,mode=min
|
|
env:
|
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Send Slack Notification
|
|
run: |
|
|
# Determine release type and tags
|
|
if [[ "${{ github.event.release.tag_name }}" == *"-lts"* ]]; then
|
|
release_type="🔒 LTS Release"
|
|
branch="lts-3.16"
|
|
tags="tooljet/tooljet-ee:${{ github.event.release.tag_name }}, tooljet/tooljet:${{ github.event.release.tag_name }}"
|
|
else
|
|
release_type="🔄 Pre-release"
|
|
branch="main"
|
|
tags="tooljet/tooljet-ee:${{ github.event.release.tag_name }}, tooljet/tooljet:${{ github.event.release.tag_name }}"
|
|
fi
|
|
|
|
# Build message based on job status
|
|
if [[ "${{ job.status }}" == "success" ]]; then
|
|
message="✅ *ToolJet Enterprise Edition Published*\nVersion: \`${{ github.event.release.tag_name }}\`\nType: ${release_type}\nBranch: \`${branch}\`\nTags: \`${tags}\`"
|
|
else
|
|
message="❌ *ToolJet Enterprise Edition Build Failed*\nVersion: \`${{ github.event.release.tag_name }}\`\nType: ${release_type}\nBranch: \`${branch}\`\nStatus: Build or push failed"
|
|
fi
|
|
|
|
curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
|
build-tooljet-image-for-cloud-edtion:
|
|
runs-on: ubuntu-latest
|
|
if: "${{ github.event.release }}"
|
|
|
|
steps:
|
|
- name: Free up disk space
|
|
run: |
|
|
sudo rm -rf /usr/share/dotnet
|
|
sudo rm -rf /opt/ghc
|
|
sudo rm -rf /usr/local/share/boost
|
|
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
|
sudo docker system prune -af
|
|
sudo apt-get clean
|
|
df -h
|
|
|
|
- name: Checkout code to LTS for Cloud LTS edition
|
|
if: "contains(github.event.release.tag_name, '-lts')"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: refs/heads/lts-3.16
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Docker Login
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Build and Push Docker image for LTS tag
|
|
if: "contains(github.event.release.tag_name, '-lts')"
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
build-args: |
|
|
CUSTOM_GITHUB_TOKEN=${{ secrets.CUSTOM_GITHUB_TOKEN }}
|
|
BRANCH_NAME=lts-3.16
|
|
file: docker/LTS/cloud/cloud-server.Dockerfile
|
|
push: true
|
|
tags: tooljet/saas:${{ github.event.release.tag_name }}
|
|
platforms: linux/amd64
|
|
cache-from: type=gha,scope=cloud
|
|
cache-to: type=gha,scope=cloud,mode=min
|
|
env:
|
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Send Slack Notification
|
|
run: |
|
|
# Cloud edition only runs for LTS releases
|
|
release_type="🔒 LTS Release"
|
|
branch="lts-3.16"
|
|
tags="tooljet/saas:${{ github.event.release.tag_name }}"
|
|
|
|
# Build message based on job status
|
|
if [[ "${{ job.status }}" == "success" ]]; then
|
|
message="✅ *ToolJet Cloud Edition Published*\nVersion: \`${{ github.event.release.tag_name }}\`\nType: ${release_type}\nBranch: \`${branch}\`\nTags: \`${tags}\`"
|
|
else
|
|
message="❌ *ToolJet Cloud Edition Build Failed*\nVersion: \`${{ github.event.release.tag_name }}\`\nType: ${release_type}\nBranch: \`${branch}\`\nStatus: Build or push failed"
|
|
fi
|
|
|
|
curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
|
try-tooljet-image-build:
|
|
runs-on: ubuntu-latest
|
|
needs: build-tooljet-image-for-ee-edtion
|
|
if: ${{ needs.build-tooljet-image-for-ee-edtion.result == 'success' }}
|
|
|
|
steps:
|
|
- name: Free up disk space
|
|
run: |
|
|
sudo rm -rf /usr/share/dotnet
|
|
sudo rm -rf /opt/ghc
|
|
sudo rm -rf /usr/local/share/boost
|
|
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
|
sudo docker system prune -af
|
|
sudo apt-get clean
|
|
df -h
|
|
|
|
- name: Checkout code to develop
|
|
if: "!contains(github.event.release.tag_name, '-lts')"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: refs/heads/main
|
|
|
|
- name: Checkout code to lts-3.16
|
|
if: contains(github.event.release.tag_name, '-lts')
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: refs/heads/lts-3.16
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Docker Login
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Check if Docker image is present
|
|
id: check-image-presence
|
|
run: |
|
|
response=$(curl -s "https://hub.docker.com/v2/repositories/tooljet/tooljet/tags/${{ github.event.release.tag_name }}")
|
|
if [[ $? -ne 0 ]]; then
|
|
echo "Failed to fetch JSON response. Stopping workflow execution."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ $response == *"tag '${{ github.event.release.tag_name }}' not found"* ]]; then
|
|
echo "Docker image tag '${{ github.event.release.tag_name }}' not present."
|
|
exit 1
|
|
else
|
|
echo "Docker image tag '${{ github.event.release.tag_name }}' is present."
|
|
fi
|
|
|
|
- name: Build and Push Docker image for non-EE-LTS
|
|
if: "!contains(github.event.release.tag_name, '-lts')"
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
file: docker/pre-release/ee/ee-try-tooljet.Dockerfile
|
|
push: true
|
|
tags: tooljet/try:${{ github.event.release.tag_name }},tooljet/try:ee-latest
|
|
platforms: linux/amd64
|
|
cache-from: type=gha,scope=try
|
|
cache-to: type=gha,scope=try,mode=min
|
|
env:
|
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Build and Push Docker image for EE-LTS-3.0
|
|
if: contains(github.event.release.tag_name, '-lts')
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
file: docker/LTS/ee/ee-try-tooljet-lts.Dockerfile
|
|
push: true
|
|
tags: tooljet/try:${{ github.event.release.tag_name }},tooljet/try:ee-lts-latest
|
|
platforms: linux/amd64
|
|
cache-from: type=gha,scope=try
|
|
cache-to: type=gha,scope=try,mode=min
|
|
env:
|
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Send Slack Notification
|
|
run: |
|
|
# Determine release type and tags
|
|
if [[ "${{ github.event.release.tag_name }}" == *"-lts"* ]]; then
|
|
release_type="🔒 LTS Release"
|
|
branch="lts-3.16"
|
|
tags="tooljet/try:${{ github.event.release.tag_name }}, tooljet/try:ee-lts-latest"
|
|
else
|
|
release_type="🔄 Pre-release"
|
|
branch="main"
|
|
tags="tooljet/try:${{ github.event.release.tag_name }}, tooljet/try:ee-latest"
|
|
fi
|
|
|
|
# Build message based on job status
|
|
if [[ "${{ job.status }}" == "success" ]]; then
|
|
message="✅ *Try-ToolJet Image Published*\nVersion: \`${{ github.event.release.tag_name }}\`\nType: ${release_type}\nBranch: \`${branch}\`\nTags: \`${tags}\`"
|
|
else
|
|
message="❌ *Try-ToolJet Image Build Failed*\nVersion: \`${{ github.event.release.tag_name }}\`\nType: ${release_type}\nBranch: \`${branch}\`\nStatus: Build or push failed"
|
|
fi
|
|
|
|
curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL }}
|