BINARY := dealspace BUILD_DIR := build REMOTE := root@82.24.174.112 REMOTE_PATH := /opt/dealspace/bin/dealspace REMOTE_MIG := /opt/dealspace/migrations .PHONY: build run test clean deploy install-service build: @mkdir -p $(BUILD_DIR) @# Copy website into cmd/server for go:embed @rm -rf cmd/server/website @cp -r website cmd/server/website go build -o $(BUILD_DIR)/$(BINARY) ./cmd/server @rm -rf cmd/server/website @echo "Built $(BUILD_DIR)/$(BINARY)" run: build $(BUILD_DIR)/$(BINARY) test: go test ./... clean: rm -rf $(BUILD_DIR) rm -rf cmd/server/website deploy: clean @mkdir -p $(BUILD_DIR) @rm -rf cmd/server/website @cp -r website cmd/server/website CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o $(BUILD_DIR)/$(BINARY) ./cmd/server @rm -rf cmd/server/website scp $(BUILD_DIR)/$(BINARY) $(REMOTE):$(REMOTE_PATH) scp -r migrations $(REMOTE):$(REMOTE_MIG) ssh $(REMOTE) 'systemctl restart dealspace' @echo "Deployed to $(REMOTE)" install-service: @echo '[Unit]' > /tmp/dealspace.service @echo 'Description=Dealspace' >> /tmp/dealspace.service @echo 'After=network.target' >> /tmp/dealspace.service @echo '' >> /tmp/dealspace.service @echo '[Service]' >> /tmp/dealspace.service @echo 'Type=simple' >> /tmp/dealspace.service @echo 'User=root' >> /tmp/dealspace.service @echo 'WorkingDirectory=/opt/dealspace' >> /tmp/dealspace.service @echo 'EnvironmentFile=/opt/dealspace/.env' >> /tmp/dealspace.service @echo 'ExecStart=/opt/dealspace/bin/dealspace' >> /tmp/dealspace.service @echo 'Restart=always' >> /tmp/dealspace.service @echo 'RestartSec=5' >> /tmp/dealspace.service @echo '' >> /tmp/dealspace.service @echo '[Install]' >> /tmp/dealspace.service @echo 'WantedBy=multi-user.target' >> /tmp/dealspace.service scp /tmp/dealspace.service $(REMOTE):/etc/systemd/system/dealspace.service ssh $(REMOTE) 'systemctl daemon-reload && systemctl enable dealspace' @echo "Service installed"