-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
156 lines (136 loc) · 6.17 KB
/
Makefile
File metadata and controls
156 lines (136 loc) · 6.17 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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
.PHONY: help clean test test-ci package publish vet tidy fmt
LAMBDA_BUCKET ?= "pennsieve-cc-lambda-functions-use1"
WORKING_DIR ?= "$(shell pwd)"
API_DIR ?= "api"
# Service Lambda
SERVICE_NAME ?= "packages-service"
SERVICE_EXEC ?= "bootstrap"
SERVICE_PACK ?= "packagesService"
SERVICE_PACKAGE_NAME ?= "${SERVICE_NAME}-${IMAGE_TAG}.zip"
# Restore Package Lambda
RESTORE_NAME ?= "restore-package"
RESTORE_EXEC ?= "bootstrap"
RESTORE_PACK ?= "restorePackage"
RESTORE_PACKAGE_NAME ?= "${RESTORE_NAME}-${IMAGE_TAG}.zip"
# Key Rotation Lambda
KEY_ROTATION_NAME ?= "key-rotation"
KEY_ROTATION_EXEC ?= "bootstrap"
KEY_ROTATION_PACK ?= "keyRotation"
KEY_ROTATION_PACKAGE_NAME ?= "${KEY_ROTATION_NAME}-${IMAGE_TAG}.zip"
# Asset Cleanup Lambda
ASSET_CLEANUP_NAME ?= "asset-cleanup"
ASSET_CLEANUP_EXEC ?= "bootstrap"
ASSET_CLEANUP_PACK ?= "assetCleanup"
ASSET_CLEANUP_PACKAGE_NAME ?= "${ASSET_CLEANUP_NAME}-${IMAGE_TAG}.zip"
.DEFAULT: help
MODULES := lambda/service lambda/restore lambda/key-rotation lambda/asset-cleanup api
help:
@echo "Make Help for $(SERVICE_NAME)"
@echo ""
@echo "make clean - spin down containers and remove db files"
@echo "make test - run dockerized tests locally"
@echo "make test-ci - run dockerized tests for Jenkins"
@echo "make package - create venv and package lambda function"
@echo "make publish - package and publish lambda function"
@echo "make tidy - run go mod tidy on all modules"
@echo "make vet - run go vet on all modules"
@echo "make fmt - run go fmt on all modules"
# Start the local versions of docker services
local-services:
docker compose -f docker-compose.test.yml down --remove-orphans
docker compose -f docker-compose.test.yml -f docker-compose.test.local.override.yml up -d pennsievedb minio dynamodb
@echo "Waiting for database to be ready..."
@until docker compose -f docker-compose.test.yml exec pennsievedb pg_isready -U postgres; do sleep 1; done
# Run tests locally
test: local-services
./run-tests.sh $(MODULES)
docker compose -f docker-compose.test.yml down --remove-orphans
# Run test coverage locally
test-coverage: local-services
./run-test-coverage.sh $(MODULES)
docker compose -f docker-compose.test.yml down --remove-orphans
make clean
# Run dockerized tests (used on Jenkins)
test-ci:
docker compose -f docker-compose.test.yml down --remove-orphans
@IMAGE_TAG=$(IMAGE_TAG) docker compose -f docker-compose.test.yml run --rm ci-tests $(MODULES)
clean: docker-clean
rm -fR lambda/bin
# Spin down active docker containers.
docker-clean:
docker compose -f docker-compose.test.yml down
# Build lambda and create ZIP file
package:
@echo ""
@echo "*******************************"
@echo "* Building service lambda *"
@echo "*******************************"
@echo ""
cd ${WORKING_DIR}/lambda/service; \
env GOOS=linux GOARCH=amd64 go build -o $(WORKING_DIR)/lambda/bin/$(SERVICE_PACK)/$(SERVICE_EXEC); \
cd $(WORKING_DIR)/lambda/bin/$(SERVICE_PACK)/ ; \
zip -r $(WORKING_DIR)/lambda/bin/$(SERVICE_PACK)/$(SERVICE_PACKAGE_NAME) .
@echo ""
@echo "***************************************"
@echo "* Building restore package lambda *"
@echo "***************************************"
@echo ""
cd ${WORKING_DIR}/lambda/restore; \
env GOOS=linux GOARCH=amd64 go build -o $(WORKING_DIR)/lambda/bin/$(RESTORE_PACK)/$(RESTORE_EXEC); \
cd $(WORKING_DIR)/lambda/bin/$(RESTORE_PACK)/ ; \
zip -r $(WORKING_DIR)/lambda/bin/$(RESTORE_PACK)/$(RESTORE_PACKAGE_NAME) .
@echo ""
@echo "************************************"
@echo "* Building key rotation lambda *"
@echo "************************************"
@echo ""
cd ${WORKING_DIR}/lambda/key-rotation; \
env GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o $(WORKING_DIR)/lambda/bin/$(KEY_ROTATION_PACK)/$(KEY_ROTATION_EXEC); \
cd $(WORKING_DIR)/lambda/bin/$(KEY_ROTATION_PACK)/ ; \
zip -r $(WORKING_DIR)/lambda/bin/$(KEY_ROTATION_PACK)/$(KEY_ROTATION_PACKAGE_NAME) .
@echo ""
@echo "**************************************"
@echo "* Building asset cleanup lambda *"
@echo "**************************************"
@echo ""
cd ${WORKING_DIR}/lambda/asset-cleanup; \
env GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o $(WORKING_DIR)/lambda/bin/$(ASSET_CLEANUP_PACK)/$(ASSET_CLEANUP_EXEC); \
cd $(WORKING_DIR)/lambda/bin/$(ASSET_CLEANUP_PACK)/ ; \
zip -r $(WORKING_DIR)/lambda/bin/$(ASSET_CLEANUP_PACK)/$(ASSET_CLEANUP_PACKAGE_NAME) .
# Copy Service lambda to S3 location
publish: package
@echo ""
@echo "******************************************"
@echo "* Publishing packages-service lambda *"
@echo "******************************************"
@echo ""
aws s3 cp $(WORKING_DIR)/lambda/bin/$(SERVICE_PACK)/$(SERVICE_PACKAGE_NAME) s3://$(LAMBDA_BUCKET)/$(SERVICE_NAME)/
rm -rf $(WORKING_DIR)/lambda/bin/$(SERVICE_PACK)/$(SERVICE_PACKAGE_NAME)
@echo ""
@echo "*****************************************"
@echo "* Publishing restore package lambda *"
@echo "*****************************************"
@echo ""
aws s3 cp $(WORKING_DIR)/lambda/bin/$(RESTORE_PACK)/$(RESTORE_PACKAGE_NAME) s3://$(LAMBDA_BUCKET)/$(SERVICE_NAME)/
rm -rf $(WORKING_DIR)/lambda/bin/$(RESTORE_PACK)/$(RESTORE_PACKAGE_NAME)
@echo ""
@echo "***************************************"
@echo "* Publishing key rotation lambda *"
@echo "***************************************"
@echo ""
aws s3 cp $(WORKING_DIR)/lambda/bin/$(KEY_ROTATION_PACK)/$(KEY_ROTATION_PACKAGE_NAME) s3://$(LAMBDA_BUCKET)/$(SERVICE_NAME)/
rm -rf $(WORKING_DIR)/lambda/bin/$(KEY_ROTATION_PACK)/$(KEY_ROTATION_PACKAGE_NAME)
@echo ""
@echo "****************************************"
@echo "* Publishing asset cleanup lambda *"
@echo "****************************************"
@echo ""
aws s3 cp $(WORKING_DIR)/lambda/bin/$(ASSET_CLEANUP_PACK)/$(ASSET_CLEANUP_PACKAGE_NAME) s3://$(LAMBDA_BUCKET)/$(SERVICE_NAME)/
rm -rf $(WORKING_DIR)/lambda/bin/$(ASSET_CLEANUP_PACK)/$(ASSET_CLEANUP_PACKAGE_NAME)
# Run go mod tidy on modules
tidy:
@for mod in $(MODULES); do echo "==> tidy $$mod"; go -C $$mod mod tidy; done
vet:
@for mod in $(MODULES); do echo "==> vet $$mod"; go -C $$mod vet ./...; done
fmt:
@for mod in $(MODULES); do echo "==> fmt $$mod"; go -C $$mod fmt ./...; done