-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathMakefile
More file actions
126 lines (98 loc) · 3.1 KB
/
Makefile
File metadata and controls
126 lines (98 loc) · 3.1 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
123
124
OSVC_CONTEXT =
GOCMD ?= go
GOBUILD := $(GOCMD) build
GOBUILDRACE := GORACE="halt_on_error=1" $(GOCMD) build -race
GOCLEAN := $(GOCMD) clean
GOTEST := $(GOCMD) test
GOGEN := $(GOCMD) generate
GOVET := $(GOCMD) vet
GOINSTALL := $(GOCMD) install
SSHKEY ?= /root/.ssh/opensvc
SCP := scp -i $(SSHKEY)
SSH := ssh -i $(SSHKEY)
STRIP := /usr/bin/strip
MKDIR := /usr/bin/mkdir
INSTALL := /usr/bin/install
PREFIX ?= /usr
DIST := dist
OM := bin/om
OX := bin/ox
COMPOBJ := bin/compobj
COMPOBJ_D := share/opensvc/compliance
LOCAL_HOSTNAME := $(shell hostname 2>/dev/null || echo $${HOSTNAME:-localhost})
.PHONY: version dist deploy restart
all: clean vet test race build dist
all-race: clean vet test race build-race dist
build: version api om ox compobj
build-race: version api om-race ox-race compobj-race
deps:
$(GOINSTALL) github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@latest
api:
$(GOGEN) ./daemon/api
clean:
$(GOCLEAN)
$(GOCLEAN) -testcache
rm -f $(OM) $(OX)
compobj:
$(GOBUILD) -o $(COMPOBJ) ./util/compobj/
compobj-race:
$(GOBUILDRACE) -o $(COMPOBJ) ./util/compobj/
deploy:
@for node in $(shell $(OM) node ls); do \
echo "Deploying $(OM) to $$node..."; \
TEMP_OM_FILE="/tmp/om-$(shell head /dev/urandom | tr -dc A-Za-z0-9 | head -c 10)"; \
TEMP_OX_FILE="/tmp/ox-$(shell head /dev/urandom | tr -dc A-Za-z0-9 | head -c 10)"; \
if [ "$$node" = "$(LOCAL_HOSTNAME)" ]; then \
$(INSTALL) -m 755 $(OM) $(PREFIX)/$(OM); \
$(INSTALL) -m 755 $(OX) $(PREFIX)/$(OX); \
$(PREFIX)/$(OM) daemon restart; \
else \
$(SCP) "$(OM)" "$$node:$$TEMP_OM_FILE" && \
$(SCP) "$(OX)" "$$node:$$TEMP_OX_FILE" && \
$(SSH) "$$node" \
"sudo install -m 755 $$TEMP_OM_FILE $(PREFIX)/$(OM) \
&& sudo install -m 755 $$TEMP_OX_FILE $(PREFIX)/$(OX) \
&& rm $$TEMP_OM_FILE $$TEMP_OX_FILE \
&& $(PREFIX)/$(OM) daemon restart" || { \
echo "Deployment failed for $$node. Aborting."; \
exit 1; \
}; \
fi; \
done
@echo "Deployment to all nodes completed successfully."
dist:
$(MKDIR) -p $(DIST)/bin
$(MKDIR) -p $(DIST)/$(COMPOBJ_D)
$(INSTALL) -m 755 $(OM) $(DIST)/$(OM)
$(INSTALL) -m 755 $(OX) $(DIST)/$(OX)
$(INSTALL) -m 755 $(COMPOBJ) $(DIST)/$(COMPOBJ)
$(DIST)/$(COMPOBJ) -r -i $(DIST)/$(COMPOBJ_D)
$(STRIP) --strip-all $(DIST)/$(OM) $(DIST)/$(OX) $(DIST)/$(COMPOBJ)
VERSION=`git describe --tags --abbrev` && cd $(DIST) && tar czvf opensvc-$$VERSION.tar.gz $(OM) $(OX) $(COMPOBJ) $(COMPOBJ_D) && cd -
install:
$(MKDIR) -p $(PREFIX)/bin
$(MKDIR) -p $(PREFIX)/$(COMPOBJ_D)
$(INSTALL) -m 755 $(OM) $(PREFIX)/$(OM)
$(INSTALL) -m 755 $(OX) $(PREFIX)/$(OX)
$(INSTALL) -m 755 $(COMPOBJ) $(PREFIX)/$(COMPOBJ)
$(PREFIX)/$(COMPOBJ) -i $(PREFIX)/$(COMPOBJ_D)
om:
$(GOBUILD) -o $(OM) ./cmd/om/
om-race:
$(GOBUILDRACE) -o $(OM) ./cmd/om/
ox:
$(GOBUILD) -o $(OX) ./cmd/ox/
ox-race:
$(GOBUILDRACE) -o $(OX) ./cmd/ox/
test-race:
$(GOTEST) -p 1 -timeout 240s ./... -race
restart:
$(PREFIX)/$(OM) daemon restart
test:
$(GOTEST) -p 1 -timeout 60s ./...
testinfo:
TEST_LOG_LEVEL=info $(GOTEST) -p 1 -timeout 60s ./...
version:
git describe --tags --abbrev >util/version/text/VERSION
vet:
$(GOVET) ./...