PromucFlow_constructor/.github/workflows/ad-hoc-deploy-preview.yml
Sumesh Pradhan 87b8aa58ce
ci: Secret typo (#26192)
Typo fixed for secret token key.

---------

Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
2023-08-09 10:49:15 +05:30

195 lines
6.9 KiB
YAML

name: Ad-hoc DP | Build Push Deploy from branch ( To be used by ops.appsmith.com API layer only)
on:
# This workflow is only triggered by the `/build-deploy-preview` command dispatch
workflow_dispatch:
inputs:
branch:
description: "Github Branch to be deployed"
required: true
default: "release"
skip-tests:
description: "Flag to skip Cypress tests"
required: true
default: "true"
id:
description: "Document ID for the workflow entry in the MongoDB ( This gets initialized by the ops api )"
required: true
sub-domain-name:
description: "Sub-domain for dp.appsmith.com to by used by this deploy preview (This will also be the image name and the k8s namespace identifier)"
required: true
jobs:
update-job-details-to-db:
runs-on: ubuntu-latest
steps:
- name: Update workflow details
run: |
curl --request PATCH 'https://ops.appsmith.com/appsmith_deploy_workflow/${{github.event.inputs.id}}' \
--header 'Content-Type: application/json' \
--oauth2-bearer '${{secrets.INTERNAL_OPS_API_TOKEN}}' \
--data ' {
"status": "IN_PROGRESS",
"githubWorkflowId": "${{github.workflow.id}}",
"githubWorkflowHtmlUrl": "${{github.workflow.githubWorkflowHtmlUrl}}"
}'
server-build:
name: server-build
uses: ./.github/workflows/server-build.yml
secrets: inherit
with:
branch: ${{ github.event.inputs.branch }}
skip-tests: ${{ github.event.inputs.skip-tests }}
client-build:
name: client-build
uses: ./.github/workflows/client-build.yml
secrets: inherit
with:
branch: ${{ github.event.inputs.branch }}
skip-tests: ${{ github.event.inputs.skip-tests }}
rts-build:
name: rts-build
uses: ./.github/workflows/rts-build.yml
secrets: inherit
with:
branch: ${{ github.event.inputs.branch }}
push-image:
needs: [client-build, rts-build, server-build]
runs-on: ubuntu-latest
if: success()
steps:
# Check out merge commit
- name: Checkout Branch
uses: actions/checkout@v3
with:
ref: ${{ github.event.inputs.branch }}
# Timestamp will be used to create cache key
- id: timestamp
run: echo "timestamp=$(date +'%Y-%m-%dT%H:%M:%S')" >> $GITHUB_OUTPUT
# get Git-hash will be used to create cache key
- id: git_hash
run: echo "git_hash=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Download the client build artifact
uses: actions/download-artifact@v3
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@v3
with:
name: server-build
path: app/server/dist
- name: Download the rts build artifact
uses: actions/download-artifact@v3
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: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Push to Docker Hub
uses: docker/build-push-action@v4
with:
context: .
pull: true
push: true
cache-from: ${{ vars.DOCKER_HUB_ORGANIZATION }}/appsmith-${{ vars.EDITION }}:release
tags: |
${{ vars.DOCKER_HUB_ORGANIZATION }}/appsmith-dp:${{ github.event.inputs.sub-domain-name }}
build-args: |
APPSMITH_CLOUD_SERVICES_BASE_URL=https://release-cs.appsmith.com
outputs:
imageHash: ${{ github.event.inputs.sub-domain-name }}
build-deploy-preview:
needs: [push-image]
runs-on: ubuntu-latest
defaults:
run:
working-directory: "."
if: success()
steps:
- name: Checkout PR
uses: actions/checkout@v3
with:
ref: ${{ github.event.inputs.branch }}
- name: Install relevant packages
run: |
which aws
sudo apt update -q && sudo apt install -y curl unzip less jq
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.23.6/bin/linux/amd64/kubectl && \
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && \
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 && \
chmod 700 get_helm.sh; ./get_helm.sh
- name: Deploy Helm chart
env:
AWS_ROLE_ARN: ${{ secrets.APPSMITH_EKS_AWS_ROLE_ARN }}
AWS_ACCESS_KEY_ID: ${{ secrets.APPSMITH_CI_AWS_SECRET_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.APPSMITH_CI_AWS_SECRET_ACCESS_KEY }}
IMAGE_HASH: ${{ needs.push-image.outputs.imageHash }}
AWS_RELEASE_CERT: ${{ secrets.APPSMITH_AWS_RELEASE_CERT_RELEASE }}
DOCKER_HUB_ORGANIZATION: ${{ vars.DOCKER_HUB_ORGANIZATION }}
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
DOCKER_HUB_ACCESS_TOKEN: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
SUB_DOMAIN_NAME: ${{ github.event.inputs.sub-domain-name }}
# RECREATE: ${{ github.event.client_payload.slash_command.args.named.recreate }}
DB_USERNAME: ${{ secrets.DB_USERNAME }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
DB_URL: ${{ secrets.DB_URL }}
run: |
echo "environment variables set to deploy the image $IMAGE_HASH"
/bin/bash ./scripts/build_dp_from_branch.sh
update-db-on-completion:
needs: [build-deploy-preview]
runs-on: ubuntu-latest
steps:
- name: Update workflow completed successfully
if: success()
run: |
curl --request PATCH 'https://ops.appsmith.com/appsmith_deploy_workflow/${{github.event.inputs.id}}' \
--header 'Content-Type: application/json' \
--oauth2-bearer '${{secrets.INTERNAL_OPS_API_TOKEN}}' \
--data ' {
"status": "COMPLETED"
}'
- name: Update workflow failure
if: failure()
run: |
curl --request PATCH 'https://ops.appsmith.com/appsmith_deploy_workflow/${{github.event.inputs.id}}' \
--header 'Content-Type: application/json' \
--oauth2-bearer '${{secrets.INTERNAL_OPS_API_TOKEN}}' \
--data ' {
"status": "FAILED"
}'