67 lines
2.2 KiB
Makefile
67 lines
2.2 KiB
Makefile
HOST = 172.16.0.214
|
|
SSH_USER = root
|
|
SSH = ssh $(SSH_USER)@$(HOST)
|
|
SCP = scp
|
|
|
|
JAIL_NAME = cyclingbot
|
|
JAIL_ROOT = /jails/$(JAIL_NAME)
|
|
BINARY = cycling-bot
|
|
|
|
.PHONY: all build deploy deploy-env restart stop logs status clean
|
|
|
|
all: build deploy start
|
|
|
|
# Cross-compile for FreeBSD amd64
|
|
build:
|
|
GOOS=freebsd GOARCH=amd64 go build -o $(BINARY) .
|
|
|
|
# Create required directories inside the jail (safe to run multiple times)
|
|
setup:
|
|
$(SSH) "mkdir -p $(JAIL_ROOT)/usr/local/bin \
|
|
$(JAIL_ROOT)/usr/local/etc/rc.d \
|
|
$(JAIL_ROOT)/var/db/$(JAIL_NAME) \
|
|
$(JAIL_ROOT)/var/log \
|
|
$(JAIL_ROOT)/var/run"
|
|
|
|
# Copy binary and rc.d script into the jail (via /tmp to avoid jail dir permission issues)
|
|
deploy: build setup
|
|
$(SCP) $(BINARY) $(SSH_USER)@$(HOST):/tmp/$(BINARY)
|
|
$(SCP) rc.d/$(JAIL_NAME) $(SSH_USER)@$(HOST):/tmp/$(JAIL_NAME)-rcd
|
|
$(SSH) "jexec $(JAIL_NAME) service $(JAIL_NAME) stop 2>/dev/null; \
|
|
rm -f $(JAIL_ROOT)/usr/local/bin/$(BINARY) && \
|
|
cp /tmp/$(BINARY) $(JAIL_ROOT)/usr/local/bin/$(BINARY) && \
|
|
chmod +x $(JAIL_ROOT)/usr/local/bin/$(BINARY) && \
|
|
rm /tmp/$(BINARY) && \
|
|
rm -f $(JAIL_ROOT)/usr/local/etc/rc.d/$(JAIL_NAME) && \
|
|
cp /tmp/$(JAIL_NAME)-rcd $(JAIL_ROOT)/usr/local/etc/rc.d/$(JAIL_NAME) && \
|
|
chmod +x $(JAIL_ROOT)/usr/local/etc/rc.d/$(JAIL_NAME) && \
|
|
rm /tmp/$(JAIL_NAME)-rcd"
|
|
|
|
# Copy .env separately (run once — avoid overwriting production config)
|
|
deploy-env:
|
|
$(SCP) .env \
|
|
$(SSH_USER)@$(HOST):$(JAIL_ROOT)/var/db/$(JAIL_NAME)/.env
|
|
$(SSH) "chmod 600 $(JAIL_ROOT)/var/db/$(JAIL_NAME)/.env && \
|
|
chown 1001:1001 $(JAIL_ROOT)/var/db/$(JAIL_NAME)/.env"
|
|
|
|
start:
|
|
$(SSH) "rm -f $(JAIL_ROOT)/var/run/$(JAIL_NAME).pid && \
|
|
jexec $(JAIL_NAME) service $(JAIL_NAME) start"
|
|
|
|
restart:
|
|
$(SSH) "jexec $(JAIL_NAME) service $(JAIL_NAME) stop 2>/dev/null; \
|
|
rm -f $(JAIL_ROOT)/var/run/$(JAIL_NAME).pid && \
|
|
jexec $(JAIL_NAME) service $(JAIL_NAME) start"
|
|
|
|
stop:
|
|
$(SSH) "jexec $(JAIL_NAME) service $(JAIL_NAME) stop"
|
|
|
|
logs:
|
|
$(SSH) "jexec $(JAIL_NAME) tail -f /var/log/$(JAIL_NAME).log"
|
|
|
|
status:
|
|
$(SSH) "jls && jexec $(JAIL_NAME) service $(JAIL_NAME) status"
|
|
|
|
clean:
|
|
rm -f $(BINARY)
|