-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
179 lines (156 loc) · 8.93 KB
/
Makefile
File metadata and controls
179 lines (156 loc) · 8.93 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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
.PHONY: all server client client-windows clean deb client-deb docker-client-deb rpm client-rpm docker-server-rpm docker-client-rpm release
BINDIR := bin
PKGDIR := pkg
VERSION := $(shell cat version)
DEBNAME := $(BINDIR)/continuity-server_$(VERSION)_amd64.deb
DEBNAME_CLIENT := $(BINDIR)/continuity_$(VERSION)_amd64.deb
RPMNAME := $(BINDIR)/continuity-server-$(VERSION)-1.x86_64.rpm
RPMNAME_CLIENT := $(BINDIR)/continuity-$(VERSION)-1.x86_64.rpm
all: server client
server:
mkdir -p $(BINDIR)
GOOS=linux GOARCH=amd64 go build -ldflags "-X 'continuity/server/version.Version=$(VERSION)'" -o $(BINDIR)/continuity-server_$(VERSION) ./server/cmd
server-static:
mkdir -p $(BINDIR)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags="-s -w -X 'continuity/server/version.Version=$(VERSION)'" -o $(BINDIR)/continuity-server-static_$(VERSION) ./server/cmd
client:
mkdir -p $(BINDIR)
GOOS=linux GOARCH=amd64 go build -ldflags "-X 'continuity/client/version.Version=$(VERSION)'" -o $(BINDIR)/continuity_$(VERSION) ./client/cmd
client-windows:
mkdir -p $(BINDIR)
GOOS=windows GOARCH=amd64 go build -ldflags "-X 'continuity/client/version.Version=$(VERSION)'" -o $(BINDIR)/continuity_$(VERSION).exe ./client/cmd
clean:
rm -rf $(BINDIR) $(PKGDIR) $(DEBNAME) $(DEBNAME_CLIENT) $(RPMNAME) $(RPMNAME_CLIENT)
deb:
rm -rf $(PKGDIR)
mkdir -p $(PKGDIR)/DEBIAN
mkdir -p $(PKGDIR)/usr/bin
mkdir -p $(PKGDIR)/lib/systemd/system
mkdir -p $(PKGDIR)/opt/continuity
cp $(BINDIR)/continuity-server_$(VERSION) $(PKGDIR)/usr/bin/continuity-server
cp continuity-server.service $(PKGDIR)/lib/systemd/system/
cp config-default.yml $(PKGDIR)/opt/continuity/config.yaml
echo "Package: continuity-server\nVersion: $(VERSION)\nSection: base\nPriority: optional\nArchitecture: amd64\nMaintainer: Your Name <you@example.com>\nDescription: continuity server" > $(PKGDIR)/DEBIAN/control
echo "#!/bin/sh\n\
id -u continuity-server >/dev/null 2>&1 || useradd --system --no-create-home --shell /usr/sbin/nologin continuity-server\n\
chown -R continuity-server:continuity-server /opt/continuity\n\
systemctl daemon-reload\n\
if systemctl is-active --quiet continuity-server.service; then\n\
systemctl restart continuity-server.service\n\
else\n\
systemctl enable continuity-server.service\n\
systemctl start continuity-server.service\n\
fi\n\
" > $(PKGDIR)/DEBIAN/postinst
chmod 755 $(PKGDIR)/DEBIAN/postinst
dpkg-deb --build $(PKGDIR) $(DEBNAME)
rpm:
rm -rf $(PKGDIR)-rpm
mkdir -p $(PKGDIR)-rpm/BUILDROOT/continuity-server-$(VERSION)-1.x86_64/usr/bin
mkdir -p $(PKGDIR)-rpm/BUILDROOT/continuity-server-$(VERSION)-1.x86_64/lib/systemd/system
mkdir -p $(PKGDIR)-rpm/BUILDROOT/continuity-server-$(VERSION)-1.x86_64/opt/continuity
mkdir -p $(PKGDIR)-rpm/SPECS
cp $(BINDIR)/continuity-server_$(VERSION) $(PKGDIR)-rpm/BUILDROOT/continuity-server-$(VERSION)-1.x86_64/usr/bin/continuity-server
cp continuity-server.service $(PKGDIR)-rpm/BUILDROOT/continuity-server-$(VERSION)-1.x86_64/lib/systemd/system/
cp config-default.yml $(PKGDIR)-rpm/BUILDROOT/continuity-server-$(VERSION)-1.x86_64/opt/continuity/config.yaml
echo "Name: continuity-server" > $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "Version: $(VERSION)" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "Release: 1" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "Summary: continuity server" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "License: MIT" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "Group: System Environment/Daemons" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "BuildArch: x86_64" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "Requires: systemd" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "%description" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "continuity server for application deployment" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "%post" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "id -u continuity-server >/dev/null 2>&1 || useradd --system --no-create-home --shell /usr/sbin/nologin continuity-server" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "chown -R continuity-server:continuity-server /opt/continuity" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "systemctl daemon-reload" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "if systemctl is-active --quiet continuity-server.service; then" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo " systemctl restart continuity-server.service" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "else" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo " systemctl enable continuity-server.service" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo " systemctl start continuity-server.service" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "fi" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "%files" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "/usr/bin/continuity-server" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "/lib/systemd/system/continuity-server.service" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
echo "/opt/continuity/config.yaml" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
cd $(PKGDIR)-rpm && rpmbuild --define "_topdir $(PWD)/$(PKGDIR)-rpm" --define "_rpmdir $(PWD)/$(BINDIR)" -bb SPECS/continuity-server.spec
docker-server-deb-container:
docker run --rm -v $(PWD):/workspace -w /workspace debian:bookworm bash -c "\
apt-get update && \
apt-get install -y ca-certificates make dpkg-dev && \
make deb && \
chown -R $(shell id -u):$(shell id -g) /workspace \
"
docker-server-deb: server
make docker-server-deb-container
client-deb:
rm -rf $(PKGDIR)-client
mkdir -p $(PKGDIR)-client/DEBIAN
mkdir -p $(PKGDIR)-client/usr/bin
cp $(BINDIR)/continuity_$(VERSION) $(PKGDIR)-client/usr/bin/continuity
echo "Package: continuity\nVersion: $(VERSION)\nSection: base\nPriority: optional\nArchitecture: amd64\nMaintainer: Your Name <you@example.com>\nDescription: continuity client CLI tool" > $(PKGDIR)-client/DEBIAN/control
dpkg-deb --build $(PKGDIR)-client $(DEBNAME_CLIENT)
client-rpm:
rm -rf $(PKGDIR)-client-rpm
mkdir -p $(PKGDIR)-client-rpm/BUILDROOT/continuity-$(VERSION)-1.x86_64/usr/bin
mkdir -p $(PKGDIR)-client-rpm/SPECS
cp $(BINDIR)/continuity_$(VERSION) $(PKGDIR)-client-rpm/BUILDROOT/continuity-$(VERSION)-1.x86_64/usr/bin/continuity
echo "Name: continuity" > $(PKGDIR)-client-rpm/SPECS/continuity.spec
echo "Version: $(VERSION)" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
echo "Release: 1" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
echo "Summary: continuity client CLI tool" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
echo "License: MIT" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
echo "Group: Applications/System" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
echo "BuildArch: x86_64" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
echo "" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
echo "%description" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
echo "continuity client CLI tool for application deployment" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
echo "" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
echo "%files" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
echo "/usr/bin/continuity" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
cd $(PKGDIR)-client-rpm && rpmbuild --define "_topdir $(PWD)/$(PKGDIR)-client-rpm" --define "_rpmdir $(PWD)/$(BINDIR)" -bb SPECS/continuity.spec
docker-client-deb-container:
docker run --rm -v $(PWD):/workspace -w /workspace debian:bookworm bash -c "\
apt-get update && \
apt-get install -y ca-certificates make dpkg-dev && \
make client-deb && \
chown -R $(shell id -u):$(shell id -g) /workspace \
"
docker-client-deb: client
make docker-client-deb-container
docker-server-rpm-container:
docker run --rm -v $(PWD):/workspace -w /workspace rockylinux:9 bash -c "\
yum update -y && \
yum install -y ca-certificates make rpm-build && \
make rpm && \
chown -R $(shell id -u):$(shell id -g) /workspace \
"
docker-server-rpm: server
make docker-server-rpm-container
docker-client-rpm-container:
docker run --rm -v $(PWD):/workspace -w /workspace rockylinux:9 bash -c "\
yum update -y && \
yum install -y ca-certificates make rpm-build && \
make client-rpm && \
chown -R $(shell id -u):$(shell id -g) /workspace \
"
docker-client-rpm: client
make docker-client-rpm-container
docker-release: clean server-static
docker build -t continuity-server -f Dockerfile .
docker tag continuity-server acamb23/continuity-server:$(VERSION)
docker tag continuity-server acamb23/continuity-server
docker-publish: docker-release
docker push acamb23/continuity-server:$(VERSION)
docker push acamb23/continuity-server:latest
release: server server-static client client-windows docker-server-deb docker-client-deb docker-server-rpm docker-client-rpm
check:
cd server/api && go test -v ./... && cd ..
cd server/conf && go test -v ./... && cd ../..