-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
76 lines (61 loc) · 2.49 KB
/
Makefile
File metadata and controls
76 lines (61 loc) · 2.49 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
APP_NAME := eos-tui
CMD_PATH := .
BIN_DIR := ./bin
LOCAL_BIN := $(BIN_DIR)/$(APP_NAME)
LINUX_BIN := $(BIN_DIR)/$(APP_NAME)-linux-amd64
GO ?= go
GOOS ?= linux
GOARCH ?= amd64
GO_BUILD_FLAGS ?= -a
REMOTE_HOST ?= lobis-eos-dev
REMOTE_HOST_SECONDARY ?= eospilot
REMOTE_DIR ?= /root
REMOTE_BIN ?= $(REMOTE_DIR)/$(APP_NAME)
REMOTE_TMP ?= $(REMOTE_BIN).new
REMOTE_ARGS ?=
EOSPILOT ?=
SSH_OPTS ?= -o LogLevel=ERROR
SCP_OPTS ?= -o LogLevel=ERROR
.PHONY: build build-local test deploy-remote deploy-both deploy-remote-eospilot deploy-eospilot run-remote dev-remote smoke-remote clean help
help:
@echo "Available targets:"
@echo " build - Build linux-amd64 binary"
@echo " build-local - Build local binary"
@echo " test - Run tests"
@echo " fmt - Format code"
@echo " deploy-remote - Deploy to dev host"
@echo " deploy-eospilot - Deploy to eospilot host"
@echo " clean - Remove build artifacts"
build:
mkdir -p $(BIN_DIR)
GOOS=$(GOOS) GOARCH=$(GOARCH) $(GO) build $(GO_BUILD_FLAGS) -o $(LINUX_BIN) $(CMD_PATH)
build-local:
mkdir -p $(BIN_DIR)
$(GO) build $(GO_BUILD_FLAGS) -o $(LOCAL_BIN) $(CMD_PATH)
test:
$(GO) test ./...
fmt:
$(GO) fmt ./...
deploy-remote: build
ssh $(SSH_OPTS) $(REMOTE_HOST) 'mkdir -p $(REMOTE_DIR)'
scp $(SCP_OPTS) $(LINUX_BIN) $(REMOTE_HOST):$(REMOTE_TMP)
ssh $(SSH_OPTS) $(REMOTE_HOST) 'install -m 0755 $(REMOTE_TMP) $(REMOTE_BIN) && rm -f $(REMOTE_TMP)'
deploy-both: build
ssh $(SSH_OPTS) $(REMOTE_HOST) 'mkdir -p $(REMOTE_DIR)'
scp $(SCP_OPTS) $(LINUX_BIN) $(REMOTE_HOST):$(REMOTE_TMP)
ssh $(SSH_OPTS) $(REMOTE_HOST) 'install -m 0755 $(REMOTE_TMP) $(REMOTE_BIN) && rm -f $(REMOTE_TMP)'
ssh $(SSH_OPTS) $(REMOTE_HOST_SECONDARY) 'mkdir -p $(REMOTE_DIR)'
scp $(SCP_OPTS) $(LINUX_BIN) $(REMOTE_HOST_SECONDARY):$(REMOTE_TMP)
ssh $(SSH_OPTS) $(REMOTE_HOST_SECONDARY) 'install -m 0755 $(REMOTE_TMP) $(REMOTE_BIN) && rm -f $(REMOTE_TMP)'
deploy-eospilot: build
ssh $(SSH_OPTS) $(REMOTE_HOST_SECONDARY) 'mkdir -p $(REMOTE_DIR)'
scp $(SCP_OPTS) $(LINUX_BIN) $(REMOTE_HOST_SECONDARY):$(REMOTE_TMP)
ssh $(SSH_OPTS) $(REMOTE_HOST_SECONDARY) 'install -m 0755 $(REMOTE_TMP) $(REMOTE_BIN) && rm -f $(REMOTE_TMP)'
run-remote:
ssh $(SSH_OPTS) -tt $(REMOTE_HOST) 'TERM=$${TERM:-xterm-256color} $(REMOTE_BIN) $(REMOTE_ARGS)'
dev-remote: deploy-remote run-remote
smoke-remote: deploy-remote
ssh $(SSH_OPTS) -tt $(REMOTE_HOST) 'TERM=$${TERM:-xterm-256color} timeout 3 $(REMOTE_BIN) $(REMOTE_ARGS)' || test $$? -eq 124
clean:
rm -rf $(BIN_DIR)
rm -f eos-tui