-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
66 lines (54 loc) · 2.84 KB
/
Makefile
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
PROJECT_NAME = frozen_throne
PROJECT_ID ?= example-project
GCS_BUCKET ?= ${PROJECT_NAME}-test-bucket
WRITE_SECRET ?= SECRET
WEBHOOK_SECRET ?= secretysecret
GITHUB_APP_ID ?= 1
.PHONY: help
help: ## Show help
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.PHONY: build-linux
build-linux: ## Build go binary for linux
GOOS=linux GOARCH=amd64 go build -o bin/linux/${PROJECT_NAME} ./cmd/run_frozen_throne.go
.PHONY: build-darwin
build-darwin: ## Build go binary for mac OS
GOOS=darwin GOARCH=amd64 go build -o bin/darwin/${PROJECT_NAME} ./cmd/run_frozen_throne.go
.PHONY: run
run:
WRITE_SECRET=${WRITE_SECRET} \
WEBHOOK_SECRET=${WEBHOOK_SECRET} \
GITHUB_APP_ID=${GITHUB_APP_ID} \
./bin/darwin/frozen_throne
.PHONY: build
build: build-linux build-darwin ## Build all binaries
.PHONY: create_secrets
create_secrets: ## Create secret values
echo -n "${WRITE_SECRET}" | tr -d \\n | gcloud --project ${PROJECT_ID} secrets create FT_WRITE_SECRET --replication-policy="automatic" --data-file=-
echo -n "${WEBHOOK_SECRET}" | tr -d \\n | gcloud --project ${PROJECT_ID} secrets create FT_WEBHOOK_SECRET --replication-policy="automatic" --data-file=-
echo -n "${GITHUB_APP_ID}" | tr -d \\n | gcloud --project ${PROJECT_ID} secrets create FT_GITHUB_APP_ID --replication-policy="automatic" --data-file=-
# gcloud --project ${PROJECT_ID} secrets create FT_GITHUB_PRIVATE_KEY --replication-policy="automatic" --data-file=<PATH/TO/FILE>
.PHONY: update_secrets
update_secrets: ## Update secret values
echo "${WRITE_SECRET}" | tr -d \\n | gcloud --project ${PROJECT_ID} secrets versions add FT_WRITE_SECRET --data-file=-
echo "${WEBHOOK_SECRET}" | tr -d \\n | gcloud --project ${PROJECT_ID} secrets versions add FT_WEBHOOK_SECRET --data-file=-
echo "${GITHUB_APP_ID}" | tr -d \\n | gcloud --project ${PROJECT_ID} secrets versions add FT_GITHUB_APP_ID --data-file=-
# gcloud --project ${PROJECT_ID} secrets versions add FT_GITHUB_PRIVATE_KEY --data-file=<PATH/TO/FILE>
.PHONY: cloud_build
cloud_build: ## Build image and push it to GCR
gcloud builds submit \
--project ${PROJECT_ID} \
--config cloudbuild.yaml \
--substitutions _PROJECT_NAME=${PROJECT_NAME},_TAG=latest
.PHONY: deploy
deploy: cloud_build ## Deploy function to GCP Cloud Functions
gcloud run deploy frozen-throne \
--region europe-west1 \
--project ${PROJECT_ID} \
--memory 128Mi \
--timeout 20s \
--set-env-vars GOOGLE_CLOUD_PROJECT=${PROJECT_ID},GCS_BUCKET="${GCS_BUCKET}" \
--set-secrets 'WRITE_SECRET=FT_WRITE_SECRET:latest,READ_ONLY_SECRET=FT_READ_ONLY_SECRET:latest,WEBHOOK_SECRET=FT_WEBHOOK_SECRET:latest,GITHUB_APP_ID=FT_GITHUB_APP_ID:latest,GITHUB_APP_PRIVATE_KEY=FT_GITHUB_PRIVATE_KEY:latest' \
--max-instances 10 \
--port 8080 \
--allow-unauthenticated \
--image gcr.io/${PROJECT_ID}/${PROJECT_NAME}:latest