name: Tooljet release docker images build on: release: types: [published] workflow_dispatch: inputs: job-to-run: description: Enter the job name (tooljet-ce/tooljet-server-ce/try-tooljet) options: ["tooljet-ce", "try-tooljet", "tooljet-server-ce"] required: true image: description: "Enter the latest image tag" required: true jobs: build-tooljet-ce-image: runs-on: ubuntu-latest if: "${{ github.event.release }}" steps: - name: Checkout code uses: actions/checkout@v2 with: ref: refs/heads/main # Create Docker Buildx builder with platform configuration - name: Set up Docker Buildx run: | mkdir -p ~/.docker/cli-plugins curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx chmod a+x ~/.docker/cli-plugins/docker-buildx docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 docker buildx use mybuilder - name: Set DOCKER_CLI_EXPERIMENTAL run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV - name: use mybuilder buildx run: docker buildx use mybuilder - name: Docker Login uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and Push Docker image uses: docker/build-push-action@v4 with: context: . file: docker/production.Dockerfile push: true tags: tooljet/tooljet-ce:${{ github.event.release.tag_name }},tooljet/tooljet-ce:latest platforms: linux/amd64 env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Send Slack Notification run: | if [[ "${{ job.status }}" == "success" ]]; then message="Job '${{ env.JOB_NAME }}' succeeded! tooljet/tooljet-ce:${{ github.event.release.tag_name }}" else message="Job '${{ env.JOB_NAME }}' failed! tooljet/tooljet-ce:${{ github.event.release.tag_name }}" 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-ce-image if: ${{ needs.build-tooljet-ce-image.result == 'success' }} steps: - name: Checkout code uses: actions/checkout@v2 with: ref: main # Create Docker Buildx builder with platform configuration - name: Set up Docker Buildx run: | mkdir -p ~/.docker/cli-plugins curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx chmod a+x ~/.docker/cli-plugins/docker-buildx docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 docker buildx use mybuilder - name: Set DOCKER_CLI_EXPERIMENTAL run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV - name: use mybuilder buildx run: docker buildx use mybuilder - name: Docker Login uses: docker/login-action@v1 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-ce/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 uses: docker/build-push-action@v4 with: context: . file: docker/try-tooljet.Dockerfile push: true tags: tooljet/try:${{ github.event.release.tag_name }},tooljet/try:latest platforms: linux/amd64 env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Send Slack Notification run: | if [[ "${{ job.status }}" == "success" ]]; then message="Job '${{ env.JOB_NAME }}' succeeded! tooljet/try:${{ github.event.release.tag_name }}" else message="Job '${{ env.JOB_NAME }}' failed! tooljet/try:${{ github.event.release.tag_name }}" fi curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL }} building-tooljet-server-ce-image: runs-on: ubuntu-latest if: "${{ github.event.release }}" steps: - name: Checkout code uses: actions/checkout@v2 with: ref: refs/heads/main # Create Docker Buildx builder with platform configuration - name: Set up Docker Buildx run: | mkdir -p ~/.docker/cli-plugins curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx chmod a+x ~/.docker/cli-plugins/docker-buildx docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 docker buildx use mybuilder - name: Set DOCKER_CLI_EXPERIMENTAL run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV - name: use mybuilder buildx run: docker buildx use mybuilder - name: Docker Login uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and Push Docker image uses: docker/build-push-action@v4 with: context: . file: docker/server.Dockerfile push: true tags: tooljet/tooljet-server-ce:${{ github.event.release.tag_name }},tooljet/tooljet-server-ce:latest platforms: linux/amd64 env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Send Slack Notification run: | if [[ "${{ job.status }}" == "success" ]]; then message="Job '${{ env.JOB_NAME }}' succeeded! tooljet/tooljet-server-ce:${{ github.event.release.tag_name }}" else message="Job '${{ env.JOB_NAME }}' failed! tooljet/tooljet-server-ce:${{ github.event.release.tag_name }}" fi curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL }} #Below code helps to trigger the workflow separately tooljet-ce: runs-on: ubuntu-latest if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.job-to-run == 'tooljet-ce' }} steps: - name: Checkout code uses: actions/checkout@v2 with: ref: main # Create Docker Buildx builder with platform configuration - name: Set up Docker Buildx run: | mkdir -p ~/.docker/cli-plugins curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx chmod a+x ~/.docker/cli-plugins/docker-buildx docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 docker buildx use mybuilder - name: Set DOCKER_CLI_EXPERIMENTAL run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV - name: use mybuilder buildx run: docker buildx use mybuilder - name: Docker Login uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and Push Docker image uses: docker/build-push-action@v4 with: context: . file: docker/production.Dockerfile push: true tags: tooljet/tooljet-ce:${{ github.event.inputs.image }},tooljet/tooljet-ce:latest platforms: linux/amd64 env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Send Slack Notification run: | if [[ "${{ job.status }}" == "success" ]]; then message="Job '${{ env.JOB_NAME }}' succeeded! tooljet/tooljet-ce:${{ github.event.inputs.image }}" else message="Job '${{ env.JOB_NAME }}' failed! tooljet/tooljet-ce:${{ github.event.inputs.image }}" fi curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL }} tooljet-server-ce: runs-on: ubuntu-latest if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.job-to-run == 'tooljet-server-ce' }} steps: - name: Checkout code uses: actions/checkout@v2 with: ref: refs/heads/main # Create Docker Buildx builder with platform configuration - name: Set up Docker Buildx run: | mkdir -p ~/.docker/cli-plugins curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx chmod a+x ~/.docker/cli-plugins/docker-buildx docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 docker buildx use mybuilder - name: Set DOCKER_CLI_EXPERIMENTAL run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV - name: use mybuilder buildx run: docker buildx use mybuilder - name: Docker Login uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and Push Docker image uses: docker/build-push-action@v4 with: context: . file: docker/server.Dockerfile push: true tags: tooljet/tooljet-server-ce:${{ github.event.inputs.image }},tooljet/tooljet-server-ce:latest platforms: linux/amd64 env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Send Slack Notification run: | if [[ "${{ job.status }}" == "success" ]]; then message="Job '${{ env.JOB_NAME }}' succeeded! tooljet/tooljet-server-ce:${{ github.event.release.tag_name }}" else message="Job '${{ env.JOB_NAME }}' failed! tooljet/tooljet-server-ce:${{ github.event.release.tag_name }}" fi curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL }} try-tooljet: runs-on: ubuntu-latest if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.job-to-run == 'try-tooljet' }} steps: - name: Checkout code uses: actions/checkout@v2 with: ref: main # Create Docker Buildx builder with platform configuration - name: Set up Docker Buildx run: | mkdir -p ~/.docker/cli-plugins curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx chmod a+x ~/.docker/cli-plugins/docker-buildx docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 docker buildx use mybuilder - name: Set DOCKER_CLI_EXPERIMENTAL run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV - name: use mybuilder buildx run: docker buildx use mybuilder - name: Docker Login uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and Push Docker image uses: docker/build-push-action@v4 with: context: . file: docker/try-tooljet.Dockerfile push: true tags: tooljet/try:${{ github.event.inputs.image }},tooljet/try:latest platforms: linux/amd64 env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Send Slack Notification run: | if [[ "${{ job.status }}" == "success" ]]; then message="Job '${{ env.JOB_NAME }}' succeeded! tooljet/try:${{ github.event.inputs.image }}" else message="Job '${{ env.JOB_NAME }}' failed! tooljet/try:${{ github.event.inputs.image }}" fi curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL }}