Initial commit
contains: * Actual template * Example function * Tests * Integration test (make file) * Integration tests (deployed as lambda) * drone CI and CI scripts
This commit is contained in:
68
Makefile
Normal file
68
Makefile
Normal file
@ -0,0 +1,68 @@
|
||||
.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
|
Reference in New Issue
Block a user