chore: Fix quoting in deploy_preview.sh (#34592)

**/test sanity**



<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9716093497>
> Commit: f2381c9e21f3a2ab89a0de63375bbe58dc1fe726
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9716093497&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`

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



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

## Summary by CodeRabbit

- **Chores**
- Updated deployment script to improve environment variable handling and
AWS configuration for preview environments.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Shrikant Sharat Kandula 2024-07-01 15:06:56 +05:30 committed by GitHub
parent f25cae0513
commit ff44b4f60f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,12 +1,14 @@
#!/bin/bash #!/bin/bash
# Params are in environment variables as PARAM_{SLUG}, e.g. PARAM_USER_ID # Params are in environment variables as PARAM_{SLUG}, e.g. PARAM_USER_ID
edition=ce
# Configure the AWS & kubectl environment # Configure the AWS & kubectl environment
mkdir ~/.aws; touch ~/.aws/config mkdir ~/.aws; touch ~/.aws/config
aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID aws configure set aws_access_key_id "$AWS_ACCESS_KEY_ID"
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY aws configure set aws_secret_access_key "$AWS_SECRET_ACCESS_KEY"
export region=ap-south-1 export region=ap-south-1
export cluster_name=uat-cluster export cluster_name=uat-cluster
@ -25,23 +27,23 @@ echo "Cluster name: $cluster_name"
echo "Pull Request Number: $PULL_REQUEST_NUMBER" echo "Pull Request Number: $PULL_REQUEST_NUMBER"
echo "DP_EFS_ID: $DP_EFS_ID" echo "DP_EFS_ID: $DP_EFS_ID"
sts_output=$(aws sts assume-role --role-arn $AWS_ROLE_ARN --role-session-name ekscisession) sts_output="$(aws sts assume-role --role-arn "$AWS_ROLE_ARN" --role-session-name ekscisession)"
export AWS_ACCESS_KEY_ID=$(echo $sts_output | jq -r '.Credentials''.AccessKeyId');\ export AWS_ACCESS_KEY_ID="$(echo "$sts_output" | jq -r .Credentials.AccessKeyId)"
export AWS_SECRET_ACCESS_KEY=$(echo $sts_output | jq -r '.Credentials''.SecretAccessKey');\ export AWS_SECRET_ACCESS_KEY="$(echo "$sts_output" | jq -r .Credentials.SecretAccessKey)"
export AWS_SESSION_TOKEN=$(echo $sts_output | jq -r '.Credentials''.SessionToken'); export AWS_SESSION_TOKEN="$(echo "$sts_output" | jq -r .Credentials.SessionToken)"
export NAMESPACE=ce"$PULL_REQUEST_NUMBER" export NAMESPACE="$edition$PULL_REQUEST_NUMBER"
export CHARTNAME=ce"$PULL_REQUEST_NUMBER" export CHARTNAME="$edition$PULL_REQUEST_NUMBER"
export SECRET=ce"$PULL_REQUEST_NUMBER" export SECRET="$edition$PULL_REQUEST_NUMBER"
export DBNAME=ce"$PULL_REQUEST_NUMBER" export DBNAME="$edition$PULL_REQUEST_NUMBER"
export DOMAINNAME=ce-"$PULL_REQUEST_NUMBER".dp.appsmith.com export DOMAINNAME="$edition-$PULL_REQUEST_NUMBER.dp.appsmith.com"
export HELMCHART="appsmith" export HELMCHART="appsmith"
export HELMCHART_URL="http://helm-ee.appsmith.com" export HELMCHART_URL="http://helm-ee.appsmith.com"
export HELMCHART_VERSION="3.1.1" export HELMCHART_VERSION="3.1.1"
aws eks update-kubeconfig --region $region --name $cluster_name --profile eksci aws eks update-kubeconfig --region "$region" --name "$cluster_name" --profile eksci
echo "Set the default namespace" echo "Set the default namespace"
kubectl config set-context --current --namespace=default kubectl config set-context --current --namespace=default
@ -52,50 +54,50 @@ kubectl get pods
if [[ -n "${RECREATE-}" ]] if [[ -n "${RECREATE-}" ]]
then then
mongosh "mongodb+srv://$DB_USERNAME:$DB_PASSWORD@$DB_URL/$DBNAME?retryWrites=true&minPoolSize=1&maxPoolSize=10&maxIdleTimeMS=900000&authSource=admin" --eval 'db.dropDatabase()' mongosh "mongodb+srv://$DB_USERNAME:$DB_PASSWORD@$DB_URL/$DBNAME?retryWrites=true&minPoolSize=1&maxPoolSize=10&maxIdleTimeMS=900000&authSource=admin" --eval 'db.dropDatabase()'
pod_name=$(kubectl get pods -n $NAMESPACE -o json | jq '.items[0].metadata.name' | tr -d '"') pod_name="$(kubectl get pods -n "$NAMESPACE" -o json | jq '.items[0].metadata.name' | tr -d '"')"
kubectl exec $pod_name -n $NAMESPACE -- bash -c "rm -rf /appsmith-stacks/*" kubectl exec "$pod_name" -n "$NAMESPACE" -- bash -c "rm -rf /appsmith-stacks/*"
kubectl delete ns $NAMESPACE || true kubectl delete ns "$NAMESPACE" || true
# Placeholder to use access points more effectively # Placeholder to use access points more effectively
kubectl patch pv $NAMESPACE-appsmith -p '{"metadata":{"finalizers":null}}' || true kubectl patch pv "$NAMESPACE-appsmith" -p '{"metadata":{"finalizers":null}}' || true
kubectl delete pv $NAMESPACE-appsmith --grace-period=0 --force || true kubectl delete pv "$NAMESPACE-appsmith" --grace-period=0 --force || true
# Below lines are a placeholder to use access points more effectively # Below lines are a placeholder to use access points more effectively
# echo "deleting Accessing points" # echo "deleting Accessing points"
# ACCESS_POINT_ID=$(aws efs describe-access-points --file-system-id "$DP_EFS_ID" | jq -r '.AccessPoints[] | select(.Name=="'"ce$PULL_REQUEST_NUMBER"'") | .AccessPointId') # ACCESS_POINT_ID=$(aws efs describe-access-points --file-system-id "$DP_EFS_ID" | jq -r '.AccessPoints[] | select(.Name=="'"$edition$PULL_REQUEST_NUMBER"'") | .AccessPointId')
# echo "Deleting Accessing Point $ACCESS_POINT_ID" # echo "Deleting Accessing Point $ACCESS_POINT_ID"
# aws efs delete-access-point --access-point-id $ACCESS_POINT_ID # aws efs delete-access-point --access-point-id $ACCESS_POINT_ID
fi fi
#echo "Create Access Point and Access Point ID" #echo "Create Access Point and Access Point ID"
### Use DP-EFS and create ACCESS_POINT ### Use DP-EFS and create ACCESS_POINT
#ACCESS_POINT=$(aws efs create-access-point --file-system-id $DP_EFS_ID --tags Key=Name,Value=ce$PULL_REQUEST_NUMBER) #ACCESS_POINT=$(aws efs create-access-point --file-system-id $DP_EFS_ID --tags Key=Name,Value=$edition$PULL_REQUEST_NUMBER)
#ACCESS_POINT_ID=$(echo $ACCESS_POINT | jq -r '.AccessPointId'); #ACCESS_POINT_ID=$(echo $ACCESS_POINT | jq -r '.AccessPointId');
echo "Use kubernetes secret to Pull Image" echo "Use kubernetes secret to Pull Image"
kubectl create ns $NAMESPACE || true kubectl create ns "$NAMESPACE" || true
kubectl create secret docker-registry $SECRET \ kubectl create secret docker-registry "$SECRET" \
--docker-server=https://index.docker.io/v1/ \ --docker-server=https://index.docker.io/v1/ \
--docker-username=$DOCKER_HUB_USERNAME \ --docker-username="$DOCKER_HUB_USERNAME" \
--docker-password=$DOCKER_HUB_ACCESS_TOKEN -n $NAMESPACE --docker-password="$DOCKER_HUB_ACCESS_TOKEN" -n "$NAMESPACE"
echo "Add appsmith-ee to helm repo" echo "Add appsmith-ee to helm repo"
AWS_REGION=us-east-2 helm repo add appsmith-ee $HELMCHART_URL; AWS_REGION=us-east-2 helm repo add appsmith-ee "$HELMCHART_URL"
helm repo update; helm repo update
helm plugin install https://github.com/helm/helm-mapkubeapis -n $NAMESPACE helm plugin install https://github.com/helm/helm-mapkubeapis -n "$NAMESPACE"
helm plugin ls helm plugin ls
helm mapkubeapis $CHARTNAME -n $NAMESPACE helm mapkubeapis "$CHARTNAME" -n "$NAMESPACE"
echo "Deploy appsmith helm chart" echo "Deploy appsmith helm chart"
helm upgrade -i $CHARTNAME appsmith-ee/$HELMCHART -n $NAMESPACE --create-namespace --recreate-pods \ helm upgrade -i "$CHARTNAME" "appsmith-ee/$HELMCHART" -n "$NAMESPACE" --create-namespace --recreate-pods \
--set _image.repository=$DOCKER_HUB_ORGANIZATION/appsmith-dp --set _image.tag=$IMAGE_HASH \ --set _image.repository="$DOCKER_HUB_ORGANIZATION/appsmith-dp" --set _image.tag="$IMAGE_HASH" \
--set _image.pullPolicy="Always" \ --set _image.pullPolicy="Always" \
--set image.pullSecrets=$SECRET --set autoscaling.enabled=true --set autoscaling.minReplicas=1 \ --set image.pullSecrets="$SECRET" --set autoscaling.enabled=true --set autoscaling.minReplicas=1 \
--set autoscaling.maxReplicas=1 --set redis.enabled=false --set postgresql.enabled=false --set mongodb.enabled=false --set ingress.enabled=true \ --set autoscaling.maxReplicas=1 --set redis.enabled=false --set postgresql.enabled=false --set mongodb.enabled=false --set ingress.enabled=true \
--set "ingress.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ssl-cert=$AWS_RELEASE_CERT" \ --set "ingress.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ssl-cert=$AWS_RELEASE_CERT" \
--set "ingress.hosts[0].host=$DOMAINNAME, ingress.hosts[0].paths[0].path=/, ingress.hosts[0].paths[0].pathType=Prefix" \ --set "ingress.hosts[0].host=$DOMAINNAME, ingress.hosts[0].paths[0].path=/, ingress.hosts[0].paths[0].pathType=Prefix" \
--set autoupdate.enabled=false --set persistence.efs.enabled=true --set ingress.className="nginx" \ --set autoupdate.enabled=false --set persistence.efs.enabled=true --set ingress.className="nginx" \
--set persistence.efs.driver=efs.csi.aws.com --set persistence.storageClass=efs-dp-appsmith \ --set persistence.efs.driver=efs.csi.aws.com --set persistence.storageClass=efs-dp-appsmith \
--set persistence.efs.volumeHandle=$DP_EFS_ID:/ce/ce$PULL_REQUEST_NUMBER \ --set persistence.efs.volumeHandle="$DP_EFS_ID:/$edition/$edition$PULL_REQUEST_NUMBER" \
--set resources.requests.cpu="1m" \ --set resources.requests.cpu="1m" \
--set resources.requests.memory="2048Mi" \ --set resources.requests.memory="2048Mi" \
--set applicationConfig.APPSMITH_SENTRY_DSN="https://abf15a075d1347969df44c746cca7eaa@o296332.ingest.sentry.io/1546547" \ --set applicationConfig.APPSMITH_SENTRY_DSN="https://abf15a075d1347969df44c746cca7eaa@o296332.ingest.sentry.io/1546547" \
@ -103,4 +105,4 @@ helm upgrade -i $CHARTNAME appsmith-ee/$HELMCHART -n $NAMESPACE --create-namespa
--set applicationConfig.APPSMITH_MONGODB_URI="mongodb+srv://$DB_USERNAME:$DB_PASSWORD@$DB_URL/$DBNAME?retryWrites=true&minPoolSize=1&maxPoolSize=10&maxIdleTimeMS=900000&authSource=admin" \ --set applicationConfig.APPSMITH_MONGODB_URI="mongodb+srv://$DB_USERNAME:$DB_PASSWORD@$DB_URL/$DBNAME?retryWrites=true&minPoolSize=1&maxPoolSize=10&maxIdleTimeMS=900000&authSource=admin" \
--set applicationConfig.APPSMITH_DISABLE_EMBEDDED_KEYCLOAK=\"1\" \ --set applicationConfig.APPSMITH_DISABLE_EMBEDDED_KEYCLOAK=\"1\" \
--set applicationConfig.APPSMITH_CUSTOMER_PORTAL_URL="https://release-customer.appsmith.com" \ --set applicationConfig.APPSMITH_CUSTOMER_PORTAL_URL="https://release-customer.appsmith.com" \
--version $HELMCHART_VERSION --version "$HELMCHART_VERSION"