-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
110 lines (96 loc) · 3.76 KB
/
Makefile
File metadata and controls
110 lines (96 loc) · 3.76 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
.PHONY: help clean test test-ci package publish tidy vet
LAMBDA_BUCKET ?= "pennsieve-cc-lambda-functions-use1"
WORKING_DIR ?= "$(shell pwd)"
SERVICE_NAME ?= "app-deploy-service"
PACKAGE_NAME ?= "${SERVICE_NAME}-${IMAGE_TAG}.zip"
STATUS_PACKAGE_NAME ?= "${SERVICE_NAME}-status-${IMAGE_TAG}.zip"
.DEFAULT: help
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"
# Run dockerized tests (can be used locally)
test:
docker compose -f docker-compose.test.yml down --remove-orphans
docker compose -f docker-compose.test.yml up --exit-code-from local_tests local_tests
# 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 up --exit-code-from=ci-tests ci-tests
# Remove folders created by build
clean: docker-clean
rm -rf $(WORKING_DIR)/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 lambda/service; \
env GOOS=linux GOARCH=arm64 go build -tags lambda.norpc -o $(WORKING_DIR)/lambda/bin/service/bootstrap; \
cd $(WORKING_DIR)/lambda/bin/service/ ; \
zip -r $(WORKING_DIR)/lambda/bin/service/$(PACKAGE_NAME) .
@echo ""
@echo "******************************"
@echo "* Building status lambda *"
@echo "******************************"
@echo ""
cd lambda/status; \
env GOOS=linux GOARCH=arm64 go build -tags lambda.norpc -o $(WORKING_DIR)/lambda/bin/status/bootstrap; \
cd $(WORKING_DIR)/lambda/bin/status/ ; \
zip -r $(WORKING_DIR)/lambda/bin/status/$(STATUS_PACKAGE_NAME) .
@echo ""
@echo "***********************"
@echo "* Building Fargate *"
@echo "***********************"
@echo ""
cd $(WORKING_DIR)/fargate/app-provisioner; \
docker build -t pennsieve/app-provisioner:${IMAGE_TAG} . ;\
@echo "Done"
# Copy Service lambda to S3 location
publish: package
@echo ""
@echo "*********************************"
@echo "* Publishing service lambda *"
@echo "*********************************"
@echo ""
@echo "starting cp"
ls $(WORKING_DIR)/lambda/bin/service/
aws s3 cp $(WORKING_DIR)/lambda/bin/service/$(PACKAGE_NAME) s3://$(LAMBDA_BUCKET)/$(SERVICE_NAME)/ --output json
@echo "done cp"
rm -rf $(WORKING_DIR)/lambda/bin/service/$(PACKAGE_NAME) $(WORKING_DIR)/lambda/bin/service/bootstrap
@echo ""
@echo "********************************"
@echo "* Publishing status lambda *"
@echo "********************************"
@echo ""
@echo "starting cp"
ls $(WORKING_DIR)/lambda/bin/status/
aws s3 cp $(WORKING_DIR)/lambda/bin/status/$(STATUS_PACKAGE_NAME) s3://$(LAMBDA_BUCKET)/$(SERVICE_NAME)/ --output json
@echo "done cp"
rm -rf $(WORKING_DIR)/lambda/bin/status/$(STATUS_PACKAGE_NAME) $(WORKING_DIR)/lambda/bin/status/bootstrap
@echo ""
@echo "**************************"
@echo "* Publishing Fargate *"
@echo "**************************"
@echo ""
docker push pennsieve/app-provisioner:${IMAGE_TAG}
@echo "Done"
# Run go mod tidy on modules
tidy:
cd ${WORKING_DIR}/lambda/service; go mod tidy
cd ${WORKING_DIR}/lambda/status; go mod tidy
cd ${WORKING_DIR}/fargate/app-provisioner; go mod tidy
# Run go vet on modules
vet:
cd ${WORKING_DIR}/lambda/service; go vet ./...
cd ${WORKING_DIR}/lambda/status; go vet ./...
cd ${WORKING_DIR}/fargate/app-provisioner; go vet ./...