-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
96 lines (83 loc) · 2.38 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
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
NAME := trs
NAME_GEN := trs_gen
SERVER := trs_server
BIN := ./target/release/$(NAME)
SRC := $(shell find ./src -type f -name '*.rs')
PWD := $(shell pwd)
GIT_HASH := $(shell git log --pretty=format:"%H" | head -n1)
GCP_PJ_ID := trslt-165501
GCP_REPO := asia.gcr.io/$(GCP_PJ_ID)/github-kogai-trs:$(GIT_HASH)
GCP_FN_NAME := helloGET
GCP_FN_ENDPOINT := ${GCP_FN_ENDPOINT}
GOOGLE_CLOUD_PLATFORM_API_KEY := "${GOOGLE_CLOUD_PLATFORM_API_KEY}"
OXFORD_API_ID := "${OXFORD_API_ID}"
OXFORD_API_KEY := "${OXFORD_API_KEY}"
OS := $(shell uname)
VERSION := $(shell cat Cargo.toml | grep version | sed -e 's/version\ =\ \"\(.*\)\"/\1/')
bin/$(OS)/$(NAME): Cargo.toml $(SRC)
GCP_FN_ENDPOINT=$(GCP_FN_ENDPOINT) && \
cargo build --release
mkdir -p bin/$(OS)
cp target/release/$(NAME) bin/$(OS)/$(NAME)
.PHONY: server/build
server/build:
docker build \
--build-arg \
GOOGLE_CLOUD_PLATFORM_API_KEY=$(GOOGLE_CLOUD_PLATFORM_API_KEY) \
--build-arg \
OXFORD_API_ID=$(OXFORD_API_ID) \
--build-arg \
OXFORD_API_KEY=$(OXFORD_API_KEY) \
-t $(SERVER) .
.PHONY: server/push
server/push:
docker tag $(SERVER) $(GCP_REPO)
gcloud docker -- push $(GCP_REPO)
.PHONY: server/run
server/run: server/build
docker run -t $(SERVER) -p 3000:3000
.PHONY: hyper/login
hyper/login:
hyper login \
-e [email protected] \
-u oauth2accesstoken \
-p "$(shell gcloud --project=trs-command auth print-access-token)" \
https://asia.gcr.io
.PHONY: hyper/create
hyper/create: hyper/login
hyper pull $(GCP_REPO)
hyper func create --name $(NAME) $(GCP_REPO)
.PHONY: hyper/rebuild
hyper/rebuild: server/build hyper/login
hyper func rm $(NAME) $(GCP_REPO)
hyper pull $(GCP_REPO)
hyper func create --name $(NAME) $(GCP_REPO)
.PHONY: cache
cache:
rm -f .trs-cache
GOOGLE_CLOUD_PLATFORM_API_KEY=$(GOOGLE_CLOUD_PLATFORM_API_KEY) && \
OXFORD_API_ID=$(OXFORD_API_ID) && \
OXFORD_API_KEY=$(OXFORD_API_KEY) && \
cargo run -- -d dog
ls -lh .trs-cache
.PHONY: clean
clean:
rm -rf bin
cargo clean
.PHONY: functions
functions:
gcloud config set project trslt-165501
gcloud beta functions deploy $(GCP_FN_NAME) --trigger-http
curl -d "key=value" $(GCP_FN_ENDPOINT)
.PHONY: release
release:
git tag -af "v${VERSION}" -m ""
git push
git push --follow-tags
.PHONY: perf.data
perf.data:
perf record -g -o ./perf.data -- $(NAME) -t cat is cute
perf report -g -G
secrets:
mkdir -p secrets
ssh-keygen -t rsa -b 4096 -C "[email protected]"