-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
122 lines (98 loc) · 3.43 KB
/
Copy pathMakefile
File metadata and controls
122 lines (98 loc) · 3.43 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
# TODO: now ENABLE_S3_ASSETS is always FALSE, this could be simplified
export ENABLE_S3_ASSETS?=false
APP=explore-local-statistics
# where this will run (for CDN)
AWS_PROFILE?=dp-sandbox
AWS_REGION?=eu-west-2
# where the docker image goes
ECR_AWS_PROFILE?=dp-ci
AWS_ECR_ACCOUNT?=$(shell aws sts --profile $(ECR_AWS_PROFILE) get-caller-identity --query Account --output text)
AWS_ECR_URL?=$(AWS_ECR_ACCOUNT).dkr.ecr.$(AWS_REGION).amazonaws.com
IMAGE_TAG?=$(error Must use: make IMAGE_TAG=tag_for_image)
IMAGE_NAME?=explore-local-statistics
IMAGE_URL?=$(AWS_ECR_URL)/$(IMAGE_NAME)
# 7 matches that from cdn-assets image put short_ref (for ECR)
export COMMIT_HASH?=$(shell git rev-parse --short=7 HEAD)
NVM_SOURCE_PATH ?= $(HOME)/.nvm/nvm.sh
ifneq ("$(wildcard $(NVM_SOURCE_PATH))","")
NVM_EXEC = source $(NVM_SOURCE_PATH) && nvm exec --
endif
NPM = $(NVM_EXEC) npm
PORT?=3000
S3_CDN_BUCKET?=ons-$(AWS_PROFILE)-cdn
S3_PREFIX?=explore-local-statistics/$(COMMIT_HASH)
AWS_S3_CDN_URL?=s3://$(S3_CDN_BUCKET)/$(S3_PREFIX)
ifeq ($(ENABLE_S3_ASSETS),true)
# XXX keep SVELTEKIT_ASSETS_PATH value aligned with the $(APP).nomad plan file
ifeq ($(AWS_PROFILE),dp-prod)
export SVELTEKIT_ASSETS_PATH=https://cdn.ons.gov.uk/$(S3_PREFIX)
else ifeq ($(AWS_PROFILE),dp-sandbox)
export SVELTEKIT_ASSETS_PATH=https://cdn.sandbox.onsdigital.co.uk/$(S3_PREFIX)
else ifeq ($(AWS_PROFILE),dp-staging)
export SVELTEKIT_ASSETS_PATH=https://cdn.staging.onsdigital.co.uk/$(S3_PREFIX)
else
$(error makefile not prepared for AWS_PROFILE=$(AWS_PROFILE))
endif
else # ENABLE_S3_ASSETS is false
export SVELTEKIT_ASSETS_PATH=
endif # ENABLE_S3_ASSETS
export SVELTEKIT_BASE_PATH=/explore-local-statistics
export SVELTEKIT_ADAPTER=node
export SVELTEKIT_APP_VERSION=$(COMMIT_HASH)
.PHONY: build
build: build-builder
.PHONY: audit
audit:
$(NPM) install --unsafe-perm
$(NPM) run audit
.PHONY: lint
lint:
exit 0 # no-op for now XXX
# $(NPM) install --unsafe-perm
# $(NPM) run lint
.PHONY: build-local
build-local:
docker build --build-arg SVELTEKIT_BASE_PATH=$(SVELTEKIT_BASE_PATH) \
--build-arg SVELTEKIT_ASSETS_PATH=$(SVELTEKIT_ASSETS_PATH) \
--build-arg SVELTEKIT_APP_VERSION=$(SVELTEKIT_APP_VERSION) \
--build-arg AWS_ECR_ACCOUNT=$(AWS_ECR_ACCOUNT) \
--build-arg COMMIT_HASH=$(COMMIT_HASH) \
--build-arg IMAGE_TAG=$(IMAGE_TAG) \
--build-arg AWS_PROFILE=$(AWS_PROFILE) \
--build-arg ENABLE_S3_ASSETS=$(ENABLE_S3_ASSETS) \
--tag $(IMAGE_URL):$(IMAGE_TAG) .
.PHONY: debug
debug:
docker run -p $(PORT):$(PORT) $(IMAGE_URL):$(IMAGE_TAG)
.PHONY: push
push: push-image push-assets
.PHONY: push-image
push-image:
AWS_PROFILE=$(AWS_ECR_ACCOUNT) docker push $(IMAGE_URL):$(IMAGE_TAG)
.PHONY: push-assets
push-assets:
ifeq ($(ENABLE_S3_ASSETS),true)
@echo "WANT: aws s3 cp --recursive ./build/client/explore-local-statistics $(AWS_S3_CDN_URL)"
else
@echo "SKIPPING (no data separation requested): aws s3 cp --recursive ./build/client/explore-local-statistics $(AWS_S3_CDN_URL)"
endif
.PHONY: run
run:
docker run -p $(PORT):$(PORT) $(IMAGE_URL):$(IMAGE_TAG)
.PHONY: test
test:
$(NPM) install --unsafe-perm
$(NPM) run test:unit
.PHONY: test-component
test-component:
exit 0 # no-op
# the `build-builder*` targets are separated deliberately, trying to keep consistent across:
# - local builds: `Dockerfile`
# - CI builds: `ci/scripts/build.sh`
.PHONY: build-builder-init
build-builder-init:
$(NPM) ci
.PHONY: build-builder
build-builder:
$(NPM) run build
$(NPM) prune --production