-
Notifications
You must be signed in to change notification settings - Fork 29
Expand file tree
/
Copy pathMakefile
More file actions
78 lines (66 loc) · 3.04 KB
/
Makefile
File metadata and controls
78 lines (66 loc) · 3.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
export AWS_ACCESS_KEY_ID ?= test
export AWS_SECRET_ACCESS_KEY ?= test
export AWS_DEFAULT_REGION=us-east-1
SHELL := /bin/bash
## Show this help
usage:
@fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##//'
## Check if all required prerequisites are installed
check:
@command -v docker > /dev/null 2>&1 || { echo "Docker is not installed. Please install Docker and try again."; exit 1; }
@command -v localstack > /dev/null 2>&1 || { echo "LocalStack is not installed. Please install LocalStack and try again."; exit 1; }
@command -v aws > /dev/null 2>&1 || { echo "AWS CLI is not installed. Please install AWS CLI and try again."; exit 1; }
@command -v awslocal > /dev/null 2>&1 || { echo "awslocal is not installed. Please install awslocal and try again."; exit 1; }
@command -v python > /dev/null 2>&1 || { echo "Python is not installed. Please install Python and try again."; exit 1; }
@command -v jq > /dev/null 2>&1 || { echo "jq is not installed. Please install jq and try again."; exit 1; }
@echo "All required prerequisites are available."
## Install dependencies
install:
@echo "Installing dependencies..."
pip install virtualenv
virtualenv venv
bash -c "source venv/bin/activate && pip install -r requirements-dev.txt"
@echo "Dependencies installed successfully."
## Build the Lambda functions
build-lambdas:
@echo "Building the Lambda functions..."
bash -c "source venv/bin/activate && deployment/build-lambdas.sh"
@echo "Lambda functions built successfully."
## Deploy the application locally using `awslocal`, a wrapper for the AWS CLI
deploy:
@echo "Deploying the application..."
@make build-lambdas
deployment/awslocal/deploy.sh
@echo "Application deployed successfully."
## Deploy the application locally using `tflocal`, a wrapper for the Terraform CLI
deploy-terraform:
@command -v terraform > /dev/null 2>&1 || { echo "Terraform is not installed. Please install Terraform and try again."; exit 1; }
@which tflocal || pip install terraform-local
@echo "Deploying the application..."
@make build-lambdas
deployment/tflocal/deploy.sh
@echo "Application deployed successfully."
## Run tests locally
test:
@echo "Running tests..."
bash -c "source venv/bin/activate && pytest tests"
@echo "Tests completed successfully."
## Start LocalStack
start:
@echo "Starting LocalStack..."
@test -n "${LOCALSTACK_AUTH_TOKEN}" || (echo "LOCALSTACK_AUTH_TOKEN is not set. Find your token at https://app.localstack.cloud/workspace/auth-token"; exit 1)
@LOCALSTACK_AUTH_TOKEN=$(LOCALSTACK_AUTH_TOKEN) localstack start -d
@echo "LocalStack started successfully."
## Stop LocalStack
stop:
@echo "Stopping LocalStack..."
@localstack stop
@echo "LocalStack stopped successfully."
## Make sure the LocalStack container is up
ready:
@echo Waiting on the LocalStack container...
@localstack wait -t 30 && echo LocalStack is ready to use! || (echo Gave up waiting on LocalStack, exiting. && exit 1)
## Save the logs in a separate file
logs:
@localstack logs > logs.txt
.PHONY: usage install start ready build-lambdas deploy test logs stop