## 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
129 lines
3.6 KiB
YAML
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 }}
|