120 lines
3.4 KiB
Bash
Executable File
120 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
bold=$(tput bold)
|
|
normal=$(tput sgr0)
|
|
|
|
source .env
|
|
|
|
echo "${bold}Starting the deployment process${normal}"
|
|
|
|
# Default value for the stage variable
|
|
stage="dev"
|
|
|
|
# Parse command line options using getopts
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
|
|
case $key in
|
|
--stage)
|
|
shift
|
|
stage="$1"
|
|
;;
|
|
*)
|
|
# Ignore unknown options or arguments
|
|
;;
|
|
esac
|
|
|
|
shift
|
|
done
|
|
|
|
# Check if the stage variable has a non-empty value
|
|
if [ -n "$stage" ]; then
|
|
echo "Passed stage value: $stage"
|
|
else
|
|
echo "Stage flag not provided or value not specified."
|
|
echo "Will proceed with the default value: dev"
|
|
fi
|
|
|
|
echo "${bold}Installing dependencies via Yarn${normal}"
|
|
|
|
yarn
|
|
|
|
if [[ -z "${DATABASE_URL}" ]]; then
|
|
printf "%s" "Enter the Mongo Database URL: "
|
|
read -r DB_URL
|
|
export DATABASE_URL=$DB_URL
|
|
fi
|
|
|
|
if [[ -z "${JSON_RPC}" ]]; then
|
|
printf "%s" "Enter the JSON RPC endpoint: "
|
|
read -r JSON_RPC
|
|
export JSON_RPC=$JSON_RPC
|
|
fi
|
|
|
|
if [[ -z "${CONTRACT_ADDRESS}" ]]; then
|
|
printf "%s" "Enter the contract address: "
|
|
read -r CONTRACT_ADDRESS
|
|
export CONTRACT_ADDRESS=$CONTRACT_ADDRESS
|
|
fi
|
|
|
|
if [[ -z "${PRIVATE_KEY}" ]]; then
|
|
printf "%s" "Enter the private key: "
|
|
read -r PRIVATE_KEY
|
|
export PRIVATE_KEY=$PRIVATE_KEY
|
|
fi
|
|
|
|
if [[ -z "${AWS_ACCESS_KEY_ID}" ]]; then
|
|
printf "%s" "Enter the AWS access key ID: "
|
|
read -r AWS_ACCESS_KEY_ID
|
|
export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
|
|
fi
|
|
|
|
if [[ -z "${AWS_SECRET_ACCESS_KEY}" ]]; then
|
|
printf "%s" "Enter the AWS secret access key: "
|
|
read -r AWS_SECRET_ACCESS_KEY
|
|
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
|
|
fi
|
|
|
|
echo "${bold}Copying the Prisma schema file to function directories${normal}"
|
|
cp prisma/schema.prisma dist/src/functions/builds/
|
|
cp prisma/schema.prisma dist/src/functions/mints/
|
|
|
|
echo "${bold}Generating Prisma Client${normal}"
|
|
yarn prisma:generate
|
|
|
|
echo "${bold}Running the build command${normal}"
|
|
yarn build
|
|
|
|
echo "${bold}Copying the rhel openssl engine to dist/${normal}"
|
|
cp node_modules/.prisma/client/libquery_engine-rhel-openssl-1.0.x.so.node dist/src/functions/mints
|
|
cp node_modules/.prisma/client/libquery_engine-rhel-openssl-1.0.x.so.node dist/src/functions/builds
|
|
cp node_modules/.prisma/client/libquery_engine-rhel-openssl-1.0.x.so.node dist/src/functions/apps
|
|
|
|
echo "${bold}Copying the .env file to dist/${normal}"
|
|
cp .env src/
|
|
|
|
echo "${bold}Copying the FleekERC721.json file to dist/serverless/src/libs${normal}"
|
|
cp src/libs/FleekERC721.json dist/src/libs/
|
|
|
|
echo "${bold}Copying the Prisma schema file to function directories${normal}"
|
|
cp prisma/schema.prisma dist/src/functions/builds/
|
|
cp prisma/schema.prisma dist/src/functions/mints/
|
|
cp prisma/schema.prisma dist/src/functions/apps/
|
|
|
|
echo "${bold}Creating layer zip files${normal}"
|
|
/bin/bash ./scripts/prepare-libs-lambda-layer.sh
|
|
/bin/bash ./scripts/prepare-prisma-client-lambda-layer.sh
|
|
/bin/bash ./scripts/prepare-node-modules-lambda-layer.sh
|
|
|
|
echo "${bold}Deploying to AWS lambda${normal}"
|
|
yarn sls deploy --stage "$stage" --verbose
|
|
|
|
# step 0 -> run yarn
|
|
# step 1 -> take params (env variables)
|
|
# step 2 -> build tsc files with yarn build
|
|
# step 3 -> run yarn generate:prisma
|
|
# step 4 -> run the other shell scripts for layer generation
|
|
# step 5 -> run the deployment command to aws
|
|
|
|
# TODO the .env file needs to move to the inside of the serverless dir in dist (zip file)
|
|
# TODO Prisma.schema files aren't being packaged with the functions in the nfa-serverless.zip file in .serverless. |