-
-
Save c0debreaker/611852dc76cd97c4af561e7b1afaac61 to your computer and use it in GitHub Desktop.
All these go in a deploy directory. The CDK is under the deploy directory which isn't the prettiest thing but neither is docker pretty
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# default-name.sh | |
# create a somewhat unique name for a CloudFormation instance that is a legal name | |
name_url_legal=$(git config --global user.name | awk '{ gsub (" ", "", $0); print}') | |
repo_url_legal=$(git branch | awk '{print $2}') | |
# the sandbox name can't include the full directory path because | |
# the name must be about 75 characters or less | |
# @see https://forums.aws.amazon.com/thread.jspa?messageID=863882&tstart=0 | |
# @see https://ubuntuforums.org/showthread.php?t=1478809 | |
sandbox_name_url_legal=$(dirname $PWD | rev | cut -d"/" -f1-4 | rev | sed 's/\//-/g') | |
user_branch_url_legal=${name_url_legal}${sandbox_name_url_legal}-${repo_url_legal} | |
echo $user_branch_url_legal |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# parse command line | |
usage="delete.sh [-n <legal cloudformation stack name> ]" | |
while getopts ":n:" opt; do | |
case ${opt} in | |
n ) | |
stack_name=$OPTARG | |
;; | |
\? ) | |
echo "Invalid option: $OPTARG\n${usage}" 1>&2 | |
;; | |
: ) | |
echo "Invalid option: $OPTARG requires an argument\n${usage}" 1>&2 | |
;; | |
esac | |
done | |
shift $((OPTIND -1)) | |
# @see https://stackoverflow.com/questions/31331788/using-aws-cli-what-is-best-way-to-determine-the-current-region | |
# for why it is so stupidly complicated to get the current region as the AWS CLI is going to see it | |
region=`aws configure list | grep region | awk '{print $2}'` | |
# get or create a name for the stack | |
default_stack_name=$($(dirname $0)/default-name.sh) | |
stack_name=${stack_name:-${default_stack_name}} | |
ddb_stack_name=${stack_name}-ddb | |
# Clean up the stack | |
#aws cloudformation delete-stack --stack-name ${stack_name} | |
#aws cloudformation delete-stack --stack-name ${ddb_stack_name} | |
#echo "Waiting for stack ${stack_name} to be deleted. This could take 30-300 seconds depending on the stack. No progress feedback provided, sorry" | |
#aws cloudformation wait stack-delete-complete --stack-name ${stack_name} | |
docker-compose -f deploy/docker-compose.yml run deploy bash -c "cd /home/code/cdk-code/umlss-stack/;cdk --app \"npx ts-node bin/umlss.ts ${stack_name}\" destroy" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: '3' | |
services: | |
deploy: | |
image: umlss/aws-cdk # your image name goes here | |
build: . | |
environment: | |
- API_GATEWAY_URL | |
- NPM_TOKEN | |
# @see https://github.com/aws/aws-sdk-js/pull/1391 | |
# @see https://stackoverflow.com/questions/57768714/get-region-from-aws-cli-using-node | |
# @see https://stackoverflow.com/questions/31331788/using-aws-cli-what-is-best-way-to-determine-the-current-region | |
# the SDK uses `AWS_REGION` and the CLI uses `AWS_DEFAULT_REGION`. What the f*ck | |
- AWS_DEFAULT_REGION | |
- AWS_REGION=${AWS_DEFAULT_REGION} | |
- AWS_SDK_LOAD_CONFIG | |
- CFT_INSTANCE_NAME | |
volumes: | |
- $HOME/.aws/:/root/.aws/:ro | |
- .:/home/code/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM node:12.16.1 | |
RUN npm update -g [email protected] | |
RUN npm install -g [email protected] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# Initialize the deploy system | |
# | |
# command line args | |
usage="init.sh [-n <legal cloudformation stack name> ]" | |
while getopts ":t:n:" opt; do | |
case ${opt} in | |
n ) | |
stack_name=$OPTARG | |
;; | |
\? ) | |
echo "Invalid option: $OPTARG\n${usage}" 1>&2 | |
;; | |
: ) | |
echo "Invalid option: $OPTARG requires an argument\n${usage}" 1>&2 | |
;; | |
esac | |
done | |
shift $((OPTIND -1)) | |
default_stack_name=$($(dirname $0)/default-name.sh) | |
stack_name=${stack_name:-${default_stack_name}} | |
echo $stack_name | |
# force build of docker image | |
docker-compose -f deploy/docker-compose.yml build | |
# | |
# Note cdk deployment name is typically your project name, and it's hard coded. It really | |
# should be in a variable and probably in a file like default-name.sh is for the actual stack name | |
# | |
# Typescript is used, so must build | |
docker-compose -f deploy/docker-compose.yml run deploy bash -c 'cd /home/code/cdk-code/umlss-stack/;npm install;npm run build' | |
# verify cdk works by listing all the CFT instances controlled by CDK | |
docker-compose -f deploy/docker-compose.yml run deploy bash -c "cd /home/code/cdk-code/umlss-stack/;cdk --app \"npx ts-node bin/umlss.ts ${stack_name}\" list" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# parse command line | |
usage="create.sh [-n <legal cloudformation stack name> ] [ -t <template file> ]" | |
while getopts ":t:n:" opt; do | |
case ${opt} in | |
t ) | |
template_file=$OPTARG | |
;; | |
n ) | |
stack_name=$OPTARG | |
;; | |
\? ) | |
echo "Invalid option: $OPTARG\n${usage}" 1>&2 | |
;; | |
: ) | |
echo "Invalid option: $OPTARG requires an argument\n${usage}" 1>&2 | |
;; | |
esac | |
done | |
shift $((OPTIND -1)) | |
# get or create a name for the stack | |
default_stack_name=$($(dirname $0)/default-name.sh) | |
stack_name=${stack_name:-${default_stack_name}} | |
# update the stack. Which for CDT is just a deploy. Yay idempotence | |
docker-compose -f deploy/docker-compose.yml run deploy bash -c "cd /home/code/cdk-code/umlss-stack/;cdk --app \"npx ts-node bin/umlss.ts ${stack_name}\" deploy" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment