|
| 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