Typo fixed for secret token key. --------- Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
195 lines
6.9 KiB
YAML
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"
|
|
}'
|
|
|
|
|