Skip to content

Commit 55f59a1

Browse files
author
Andrea Cambieri
committed
first version
1 parent 761d8c0 commit 55f59a1

50 files changed

Lines changed: 3786 additions & 77 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/makefile.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Build & Tests
2+
3+
on:
4+
push:
5+
branches: [ "master" ]
6+
pull_request:
7+
branches: [ "master" ]
8+
9+
jobs:
10+
build:
11+
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- uses: actions/checkout@v4
16+
17+
- name: build
18+
run: make all
19+
20+
tests:
21+
22+
runs-on: ubuntu-latest
23+
24+
steps:
25+
- uses: actions/checkout@v4
26+
27+
- name: tests
28+
run: make check

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/bin/
2+
/pkg/
3+
/pkg-rpm/
4+
/pkg-client/
5+
/pkg-client-rpm/

Dockerfile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
FROM alpine
2+
COPY bin/continuity-server_* /usr/bin/continuity-server
3+
COPY continuity-entrypoint.sh /
4+
RUN chmod +x /usr/bin/continuity-server
5+
6+
RUN apk update && apk upgrade
7+
8+
RUN addgroup -S continuity-server && \
9+
adduser -S -D -H -G continuity-server -s /sbin/nologin continuity-server && \
10+
mkdir -p /opt/continuity && chown continuity-server:continuity-server /opt/continuity
11+
12+
CMD ["/bin/sh","-c","/continuity-entrypoint.sh"]

Makefile

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
.PHONY: all server client client-windows clean deb client-deb docker-client-deb rpm client-rpm docker-server-rpm docker-client-rpm release
2+
3+
BINDIR := bin
4+
PKGDIR := pkg
5+
VERSION := $(shell cat version)
6+
DEBNAME := $(BINDIR)/continuity-server_$(VERSION)_amd64.deb
7+
DEBNAME_CLIENT := $(BINDIR)/continuity_$(VERSION)_amd64.deb
8+
RPMNAME := $(BINDIR)/continuity-server-$(VERSION)-1.x86_64.rpm
9+
RPMNAME_CLIENT := $(BINDIR)/continuity-$(VERSION)-1.x86_64.rpm
10+
11+
all: server client
12+
13+
server:
14+
mkdir -p $(BINDIR)
15+
go build -ldflags "-X 'continuity/server/version.Version=$(VERSION)'" -o $(BINDIR)/continuity-server_$(VERSION) ./server/cmd
16+
17+
client:
18+
mkdir -p $(BINDIR)
19+
go build -ldflags "-X 'continuity/client/version.Version=$(VERSION)'" -o $(BINDIR)/continuity_$(VERSION) ./client/cmd
20+
21+
client-windows:
22+
mkdir -p $(BINDIR)
23+
GOOS=windows GOARCH=amd64 go build -ldflags "-X 'continuity/client/version.Version=$(VERSION)'" -o $(BINDIR)/continuity_$(VERSION).exe ./client/cmd
24+
25+
clean:
26+
rm -rf $(BINDIR) $(PKGDIR) $(DEBNAME) $(DEBNAME_CLIENT) $(RPMNAME) $(RPMNAME_CLIENT)
27+
28+
deb:
29+
rm -rf $(PKGDIR)
30+
mkdir -p $(PKGDIR)/DEBIAN
31+
mkdir -p $(PKGDIR)/usr/bin
32+
mkdir -p $(PKGDIR)/lib/systemd/system
33+
mkdir -p $(PKGDIR)/opt/continuity
34+
cp $(BINDIR)/continuity-server_$(VERSION) $(PKGDIR)/usr/bin/continuity-server
35+
cp continuity-server.service $(PKGDIR)/lib/systemd/system/
36+
cp config-default.yml $(PKGDIR)/opt/continuity/config.yaml
37+
echo "Package: continuity-server\nVersion: $(VERSION)\nSection: base\nPriority: optional\nArchitecture: amd64\nMaintainer: Your Name <you@example.com>\nDescription: continuity server" > $(PKGDIR)/DEBIAN/control
38+
echo "#!/bin/sh\n\
39+
id -u continuity-server >/dev/null 2>&1 || useradd --system --no-create-home --shell /usr/sbin/nologin continuity-server\n\
40+
chown -R continuity-server:continuity-server /opt/continuity\n\
41+
systemctl daemon-reload\n\
42+
systemctl enable continuity-server.service\n\
43+
systemctl start continuity-server.service\n\
44+
" > $(PKGDIR)/DEBIAN/postinst
45+
chmod 755 $(PKGDIR)/DEBIAN/postinst
46+
dpkg-deb --build $(PKGDIR) $(DEBNAME)
47+
48+
rpm:
49+
rm -rf $(PKGDIR)-rpm
50+
mkdir -p $(PKGDIR)-rpm/BUILDROOT/continuity-server-$(VERSION)-1.x86_64/usr/bin
51+
mkdir -p $(PKGDIR)-rpm/BUILDROOT/continuity-server-$(VERSION)-1.x86_64/lib/systemd/system
52+
mkdir -p $(PKGDIR)-rpm/BUILDROOT/continuity-server-$(VERSION)-1.x86_64/opt/continuity
53+
mkdir -p $(PKGDIR)-rpm/SPECS
54+
cp $(BINDIR)/continuity-server_$(VERSION) $(PKGDIR)-rpm/BUILDROOT/continuity-server-$(VERSION)-1.x86_64/usr/bin/continuity-server
55+
cp continuity-server.service $(PKGDIR)-rpm/BUILDROOT/continuity-server-$(VERSION)-1.x86_64/lib/systemd/system/
56+
cp config-default.yml $(PKGDIR)-rpm/BUILDROOT/continuity-server-$(VERSION)-1.x86_64/opt/continuity/config.yaml
57+
echo "Name: continuity-server" > $(PKGDIR)-rpm/SPECS/continuity-server.spec
58+
echo "Version: $(VERSION)" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
59+
echo "Release: 1" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
60+
echo "Summary: continuity server" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
61+
echo "License: MIT" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
62+
echo "Group: System Environment/Daemons" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
63+
echo "BuildArch: x86_64" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
64+
echo "Requires: systemd" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
65+
echo "" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
66+
echo "%description" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
67+
echo "continuity server for application deployment" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
68+
echo "" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
69+
echo "%post" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
70+
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
71+
echo "chown -R continuity-server:continuity-server /opt/continuity" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
72+
echo "systemctl daemon-reload" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
73+
echo "systemctl enable continuity-server.service" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
74+
echo "systemctl start continuity-server.service" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
75+
echo "" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
76+
echo "%files" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
77+
echo "/usr/bin/continuity-server" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
78+
echo "/lib/systemd/system/continuity-server.service" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
79+
echo "/opt/continuity/config.yaml" >> $(PKGDIR)-rpm/SPECS/continuity-server.spec
80+
cd $(PKGDIR)-rpm && rpmbuild --define "_topdir $(PWD)/$(PKGDIR)-rpm" --define "_rpmdir $(PWD)/$(BINDIR)" -bb SPECS/continuity-server.spec
81+
82+
docker-server-deb-container:
83+
docker run --rm -v $(PWD):/workspace -w /workspace debian:bookworm bash -c "\
84+
apt-get update && \
85+
apt-get install -y ca-certificates make dpkg-dev && \
86+
make deb && \
87+
chown -R $(shell id -u):$(shell id -g) /workspace \
88+
"
89+
90+
docker-server-deb: server
91+
make docker-server-deb-container
92+
93+
client-deb:
94+
rm -rf $(PKGDIR)-client
95+
mkdir -p $(PKGDIR)-client/DEBIAN
96+
mkdir -p $(PKGDIR)-client/usr/bin
97+
cp $(BINDIR)/continuity_$(VERSION) $(PKGDIR)-client/usr/bin/continuity
98+
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
99+
dpkg-deb --build $(PKGDIR)-client $(DEBNAME_CLIENT)
100+
101+
client-rpm:
102+
rm -rf $(PKGDIR)-client-rpm
103+
mkdir -p $(PKGDIR)-client-rpm/BUILDROOT/continuity-$(VERSION)-1.x86_64/usr/bin
104+
mkdir -p $(PKGDIR)-client-rpm/SPECS
105+
cp $(BINDIR)/continuity_$(VERSION) $(PKGDIR)-client-rpm/BUILDROOT/continuity-$(VERSION)-1.x86_64/usr/bin/continuity
106+
echo "Name: continuity" > $(PKGDIR)-client-rpm/SPECS/continuity.spec
107+
echo "Version: $(VERSION)" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
108+
echo "Release: 1" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
109+
echo "Summary: continuity client CLI tool" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
110+
echo "License: MIT" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
111+
echo "Group: Applications/System" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
112+
echo "BuildArch: x86_64" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
113+
echo "" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
114+
echo "%description" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
115+
echo "continuity client CLI tool for application deployment" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
116+
echo "" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
117+
echo "%files" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
118+
echo "/usr/bin/continuity" >> $(PKGDIR)-client-rpm/SPECS/continuity.spec
119+
cd $(PKGDIR)-client-rpm && rpmbuild --define "_topdir $(PWD)/$(PKGDIR)-client-rpm" --define "_rpmdir $(PWD)/$(BINDIR)" -bb SPECS/continuity.spec
120+
121+
docker-client-deb-container:
122+
docker run --rm -v $(PWD):/workspace -w /workspace debian:bookworm bash -c "\
123+
apt-get update && \
124+
apt-get install -y ca-certificates make dpkg-dev && \
125+
make client-deb && \
126+
chown -R $(shell id -u):$(shell id -g) /workspace \
127+
"
128+
129+
docker-client-deb: client
130+
make docker-client-deb-container
131+
132+
docker-server-rpm-container:
133+
docker run --rm -v $(PWD):/workspace -w /workspace rockylinux:9 bash -c "\
134+
yum update -y && \
135+
yum install -y ca-certificates make rpm-build && \
136+
make rpm && \
137+
chown -R $(shell id -u):$(shell id -g) /workspace \
138+
"
139+
140+
docker-server-rpm: server
141+
make docker-server-rpm-container
142+
143+
docker-client-rpm-container:
144+
docker run --rm -v $(PWD):/workspace -w /workspace rockylinux:9 bash -c "\
145+
yum update -y && \
146+
yum install -y ca-certificates make rpm-build && \
147+
make client-rpm && \
148+
chown -R $(shell id -u):$(shell id -g) /workspace \
149+
"
150+
151+
docker-client-rpm: client
152+
make docker-client-rpm-container
153+
154+
docker-release: server
155+
docker build -t continuity-server -f Dockerfile .
156+
docker tag continuity-server continuity/continuity-server:$(VERSION)
157+
158+
docker-publish: docker-release
159+
docker push continuity/continuity-server:$(VERSION)
160+
161+
release: server client client-windows docker-server-deb docker-client-deb docker-server-rpm docker-client-rpm
162+
163+
check:
164+
cd server/api && go test -v ./... && cd ..
165+
cd server/conf && go test -v ./... && cd ../..

0 commit comments

Comments
 (0)