36c6d1b283
contains: * Actual template * Example function * Tests * Integration test (make file) * Integration tests (deployed as lambda) * drone CI and CI scripts
69 lines
1.6 KiB
Makefile
69 lines
1.6 KiB
Makefile
.PHONY: help all install lint clean test deploy integration-test delete
|
|
|
|
ifdef $(env)
|
|
include environments/$(env).env
|
|
endif
|
|
|
|
CFN := cloudformation
|
|
CFN_NAME := example-cloud-function
|
|
BUCKET := $(shell aws s3 ls | grep templates | cut -c 24-)
|
|
TEST_DATA := 100
|
|
TEST_RESULT := "2,4,5,10,20,25,50"
|
|
EMAIL := "cv@juancanham.com"
|
|
|
|
help:
|
|
@echo 'Targets:'
|
|
@echo ' * all [install clean lint test deploy integration-test]'
|
|
@echo ' * delete'
|
|
@echo ' - optionally you can specify an env to load overrides'
|
|
|
|
all: install clean lint test deploy integration-test
|
|
|
|
install:
|
|
pip install -r requirements.txt
|
|
|
|
clean:
|
|
rm -f */**/*.pyc
|
|
rm -f $(CFN)/.*-generated.yaml
|
|
rm -f test-response.txt
|
|
|
|
lint:
|
|
yamllint .
|
|
black .
|
|
pylint --disable line-too-long src/ tests/
|
|
cfn-lint $(CFN)/*.yaml
|
|
shellcheck ci/*.sh
|
|
|
|
test:
|
|
pytest
|
|
|
|
deploy:
|
|
aws cloudformation package \
|
|
--template-file $(CFN)/lambda-sam-template.yaml \
|
|
--s3-bucket $(BUCKET) \
|
|
--output-template-file $(CFN)/.$(CFN_NAME)-generated.yaml
|
|
|
|
aws cloudformation deploy \
|
|
--stack-name $(CFN_NAME) \
|
|
--template-file $(CFN)/.$(CFN_NAME)-generated.yaml \
|
|
--capabilities CAPABILITY_IAM \
|
|
--parameter-overrides \
|
|
NotificationEmail=$(EMAIL) \
|
|
TestData=$(TEST_DATA) \
|
|
TestExpected=$(TEST_RESULT)
|
|
|
|
delete:
|
|
aws cloudformation delete-stack --stack-name $(CFN_NAME)
|
|
|
|
integration-test:
|
|
aws lambda invoke \
|
|
--payload $(TEST_DATA)
|
|
--log-type Tail \
|
|
--function-name $$(aws cloudformation describe-stacks \
|
|
--stack-name $(CFN_NAME) \
|
|
--output text \
|
|
--query 'Stacks[0].Outputs[?OutputKey==`LambdaArn`].OutputValue' \
|
|
) \
|
|
test-response.txt
|
|
grep $(TEST_RESULT) test-response.txt
|