PromucFlow_constructor/.github/workflows/ad-hoc-docker-image.yml
Abhijeet 487001047c
chore: Add custom tag for pg build in ad-hoc image builder (#36913)
## Description
PR to add support for custom pg image during the ad-hoc-builder script.
Procedure for the hotfixes from v1.45 is as follows:

### Steps to perform the hotfix:

1. Create a hotfix branch from the tag where we need the hotfix,
`hotfix/<version>` and note down the commit-sha
2. Create hotfix branch `pg-hotfix/<version>` from commit sha on `pg`
branch from step 1
3. Cherry-pick commits from release to hotfix branches
4. Build the server locally by running `./build.sh -DskipTests` within
server directory to avoid any build failures at later stages on both the
hotfix branches
5. If we are seeing any build failure involve `@db-infra` team as
required
6. Run the ad-hoc image builder with `pg-hotfix/<version>` branch to
generate `pg` specific tag `pg-vx.y.z`
7. Do the sanity testing with postgres url
8. Only after successful generation of `pg-vx.y.z` tag from step 4, run
the ad-hoc image builder with `hotfix/<version>` branch to generate
specific tag `vx.y.z` and pass the `pg_tag` created in step 4 i.e.
`pg-vx.y.z`
9. Do the sanity test for mongo DB URLs on `vx.y.z`
10. Ask devops to create latest tags from `vx.y.z` as this is not
supported in the ad-hoc image generation script. Make sure to have
support for platforms: `linux/arm64,linux/amd64`

Fixes https://github.com/appsmithorg/appsmith/issues/36838

/test Sanity

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!WARNING]
> Tests have not run on the HEAD
9af256c80cf2c44b855bb0ea3c009f499bb7b0fc yet
> <hr>Wed, 16 Oct 2024 13:05:17 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
2024-10-17 16:07:17 +05:30

129 lines
3.6 KiB
YAML

name: Ad-hoc Docker Image
on:
# This line enables manual triggering of this workflow.
workflow_dispatch:
inputs:
branch:
description: Branch to build image out of
required: false
type: string
default: master
tag:
description: Tag to use for image
required: false
type: string
default: ad-hoc
pg_tag:
description: Postgres tag to use for image
required: false
type: string
default: pg
jobs:
server-build:
name: server-build
uses: ./.github/workflows/server-build.yml
secrets: inherit
with:
branch: ${{ inputs.branch }}
skip-tests: true
client-build:
name: client-build
uses: ./.github/workflows/client-build.yml
secrets: inherit
with:
branch: ${{ inputs.branch }}
rts-build:
name: rts-build
uses: ./.github/workflows/rts-build.yml
secrets: inherit
with:
branch: ${{ inputs.branch }}
package:
needs: [server-build, client-build, rts-build]
runs-on: ubuntu-latest
# Set permissions since we're using OIDC token authentication between Depot and GitHub
permissions:
contents: read
id-token: write
steps:
# Check out the specified branch in case this workflow is called by another workflow
- name: Checkout the specified branch
uses: actions/checkout@v4
with:
fetch-tags: true
ref: ${{ inputs.branch }}
- name: Download the react build artifact
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
uses: actions/download-artifact@v4
with:
name: server-build
path: app/server/dist
- name: Download the rts build artifact
uses: actions/download-artifact@v4
with:
name: rts-dist
path: app/client/packages/rts/dist
- name: Untar 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
run: |
run: |
if [[ -f scripts/prepare_server_artifacts.sh ]]; then
PG_TAG=${{ inputs.pg_tag }} scripts/prepare_server_artifacts.sh
else
echo "No script found to prepare server artifacts"
exit 1
fi
- name: Set up Depot CLI
uses: depot/setup-action@v1
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Build and push environment specific image to Docker Hub
if: success()
uses: depot/build-push-action@v1
with:
context: .
push: true
platforms: linux/arm64,linux/amd64
build-args: |
APPSMITH_SEGMENT_CE_KEY=${{ secrets.APPSMITH_SEGMENT_CE_KEY }}
BASE=${{ vars.DOCKER_HUB_ORGANIZATION }}/base-${{ vars.EDITION }}:nightly
tags: |
${{ vars.DOCKER_HUB_ORGANIZATION }}/appsmith-${{ vars.EDITION }}:${{ inputs.tag }}