dealspace/Makefile

58 lines
1.9 KiB
Makefile

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"