-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
118 lines (83 loc) · 3.22 KB
/
Makefile
File metadata and controls
118 lines (83 loc) · 3.22 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
################################################################################
#
# Make layer
#
################################################################################
CP = cp -f
RM = rm -f
ECHO = echo -e
TAG = etags
PIP = pip
PYTHON = python3
SHELL = /bin/bash
WATCH = /usr/bin/watch
AWS = aws
VENV ?= .venv
VENV_ACTIVATE =. $(VENV)/bin/activate
REPODIR ?= $(shell bash -i -c 'read -e -p "Path to your repo: " path; echo $$path')
PACKAGENAME ?= $(shell bash -c 'read -p "Package name: " package; echo $$package')
LAYERNAME ?= $(shell bash -c 'read -p "Layer name: " layer; echo $$layer')
GITHUB_OWNER ?= $(shell bash -c 'read -p "Owner name: " owner; echo $$owner')
GITHUB_REPO ?= $(shell bash -c 'read -p "Repo name: " repo; echo $$repo')
GITHUB_BRANCH ?= $(shell bash -c 'read -p "Branch name: " branch; echo $$branch')
GITHUB_TOKEN ?= $(shell bash -c 'read -p "Github dev token: " token; echo $$token')
ifndef VERBOSE
.SILENT:
endif
export VIRTUAL_ENV := $(abspath ${VENV})
export PATH := ${VIRTUAL_ENV}/bin:${PATH}
${VENV} :
$(PYTHON) -m venv $@
## venv: Creates venv
venv :
test -d ${VENV} || $(MAKE) venv-install
$(VENV_ACTIVATE)
which python
## venv-install: Force venv install
venv-install : requirements.txt | ${VENV}
$(PIP) install -U pip
$(PIP) install --upgrade -r requirements.txt
## parmeters: Create stack parameters
parameters :
test -f layer_params.json || $(MAKE) create-parameters
## create-parameters: Force creation of parameters for CFN
create-parameters : venv $(VENV_ACTIVATE)
$(PYTHON) create_params.py --owner $(GITHUB_OWNER) \
--repo $(GITHUB_REPO) --branch $(GITHUB_BRANCH) \
--token $(GITHUB_TOKEN) --layer-name $(LAYERNAME) \
--package-name $(PACKAGENAME)
## clean-parameters: Delete parameters
clean-parameters :
$(RM) layer_params.json
## install: Copies files to your repository
install :
$(CP) buildspec.yml layer_build.py $(REPODIR)/
## create: create CFN stack
create : $(VENV_ACTIVATE) validate parameters
$(AWS) cloudformation create-stack --stack-name lambda-layer-$(LAYERNAME) \
--template-body file://pipeline_template.yml \
--capabilities CAPABILITY_IAM --parameters file://layer_params.json
# update: Update the CFN stack
update : $(VENV_ACTIVATE) validate
$(AWS) cloudformation update-stack --stack-name lambda-layer-$(LAYERNAME) \
--template-body file://pipeline_template.yml \
--capabilities CAPABILITY_IAM --parameters file://layer_params.json
## delete: Delete the CFN stack
delete : $(VENV_ACTIVATE)
$(AWS) cloudformation delete-stack --stack-name lambda-layer-$(LAYERNAME)
## validate: Validate the CFN template
validate : $(VENV_ACTIVATE)
$(AWS) cloudformation validate-template \
--template-body file://pipeline_template.yml
## events: describe events for the stack
events : $(VENV_ACTIVATE)
$(AWS) cloudformation describe-stack-events \
--stack-name lambda-layer-$(LAYERNAME) \
--region $(AWS_REGION)
## watch: watch describe-events
watch :
$(WATCH) --interval 1 "bash -c 'make events | head -40'"
all :
help : Makefile
@sed -n 's/^##//p' $<
.PHONY : all venv venv-install clean validate watch events create update delete parameters create-parameters help