PromucFlow_constructor/.github/workflows/build-docker-image.yml
Abhijeet 115ed5af41
chore: Trigger TBP on pg for scheduled run on release (#36399)
## Description
We want to trigger TBP workflow on pg on a scheduled basis similar to
what we have for release branch to be aware of failures on pg branch
because of the continuous merges from release. We searched if scheduled
job can be triggered for non default branch but that is not possible.
With this PR we are adding a job in the workflow to trigger the
`workflow_dispatch` event with ref to pg branch. Other options which we
may want to explore is [reusable
workflows](https://docs.github.com/en/actions/sharing-automations/reusing-workflows).

/test sanity

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!CAUTION]  
> If you modify the content in this section, you are likely to disrupt
the CI result for your PR.

<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Introduced a new job for handling PostgreSQL workflows during release
events.
- **Changes**
	- Removed the `is-pg-build` parameter from the build workflow.
- Simplified the CI process by limiting job triggers to the `master`
branch.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-09-19 22:34:52 +05:30

128 lines
4.2 KiB
YAML

name: Appsmith Build Docker Image Workflow
on:
# This line enables manual triggering of this workflow.
workflow_dispatch:
workflow_call:
inputs:
pr:
description: "This is the PR number in case the workflow is being called in a pull request"
required: false
type: number
jobs:
build-docker:
runs-on: ubuntu-latest
if: |
github.event.pull_request.head.repo.full_name == github.repository ||
github.event_name == 'push' ||
github.event_name == 'workflow_dispatch' ||
github.event_name == 'repository_dispatch' ||
github.event_name == 'schedule'
defaults:
run:
shell: bash
steps:
# Check out merge commit
- name: Fork based /ok-to-test checkout
if: inputs.pr != 0
uses: actions/checkout@v4
with:
ref: "refs/pull/${{ inputs.pr }}/merge"
# Checkout the code in the current branch in case the workflow is called because of a branch push event
- name: Checkout the head commit of the branch
if: inputs.pr == 0
uses: actions/checkout@v4
- name: Download the client build artifact
if: steps.run_result.outputs.run_result != 'success'
uses: actions/download-artifact@v4
with:
name: client-build
path: app/client
- name: Unpack the client build artifact
if: steps.run_result.outputs.run_result != 'success'
run: |
mkdir -p app/client/build
tar -xvf app/client/build.tar -C app/client/build
- name: Download the server build artifact
if: steps.run_result.outputs.run_result != 'success'
uses: actions/download-artifact@v4
with:
name: server-build
path: app/server/dist/
- name: Download the rts build artifact
if: steps.run_result.outputs.run_result != 'success'
uses: actions/download-artifact@v4
with:
name: rts-dist
path: app/client/packages/rts/dist
- name: Un-tar the rts folder
run: |
tar -xvf app/client/packages/rts/dist/rts-dist.tar -C app/client/packages/rts/
echo "Cleaning up the tar files"
rm app/client/packages/rts/dist/rts-dist.tar
- name: Generate info.json
run: |
if [[ -f scripts/generate_info_json.sh ]]; then
scripts/generate_info_json.sh
fi
- name: Place server artifacts-es
env:
EDITION: ${{ vars.EDITION }}
run: |
scripts/prepare_server_artifacts.sh
- name: Set base image tag
id: set_base_tag
run: |
if [[ "${{ inputs.pr }}" != 0 || "${{ github.ref_name }}" != master ]]; then
base_tag=release
else
base_tag=nightly
fi
echo "base_tag=$base_tag" >> $GITHUB_OUTPUT
# We don't use Depot Docker builds because it's faster for local Docker images to be built locally.
# It's slower and more expensive to build these Docker images on Depot and download it back to the CI node.
- name: Build docker image
if: steps.run_result.outputs.run_result != 'success'
working-directory: "."
run: |
set -o xtrace
declare -a args
base_tag=${{ steps.set_base_tag.outputs.base_tag }}
if [[ base_tag != 'nightly' ]]; then
args+=(--build-arg "APPSMITH_CLOUD_SERVICES_BASE_URL=https://release-cs.appsmith.com")
fi
args+=(--build-arg "BASE=${{ vars.DOCKER_HUB_ORGANIZATION }}/base-${{ vars.EDITION }}:$base_tag")
docker build -t cicontainer "${args[@]}" .
# Saving the docker image to tar file
- name: Save Docker image to tar file
run: |
docker image ls --all --no-trunc --format '{{.Repository}},{{.ID}}' \
| grep -v cicontainer \
| cut -d, -f2 \
| xargs docker rmi
docker save cicontainer -o cicontainer.tar
gzip cicontainer.tar
- name: Cache docker image
uses: actions/cache/save@v4
with:
path: cicontainer.tar.gz
key: docker-image-${{github.run_id}}
- name: Save the status of the run
run: echo "run_result=success" >> $GITHUB_OUTPUT > ~/run_result