Files
cpone_midleware/Makefile

79 lines
2.2 KiB
Makefile

SHELL := /usr/bin/env bash
APP_NAME ?= cpone-middleware
GOOS ?= linux
GOARCH ?= amd64
CGO_ENABLED ?= 0
BUILD_BINARY ?= dist/$(APP_NAME)-$(GOOS)-$(GOARCH)
REMOTE_DIR ?= auto
REMOTE_BINARY ?=
SERVICE ?= $(APP_NAME).service
SERVICE_SCOPE ?= auto
RESTART_MODE ?= systemd-kill
SSH_OPTIONS ?= -o ConnectTimeout=10 -o ServerAliveInterval=5 -o ServerAliveCountMax=2
SSH_TIMEOUT ?= 45s
TRANSFER_TIMEOUT ?= 120s
# Supports both `make deploy one@host` and the explicit form
# `make deploy DEPLOY_TARGET=one@host`.
KNOWN_GOALS := help test vet build check-deploy-target deploy
POSITIONAL_TARGET := $(firstword $(filter-out $(KNOWN_GOALS),$(MAKECMDGOALS)))
DEPLOY_TARGET ?= $(POSITIONAL_TARGET)
.DEFAULT_GOAL := help
.PHONY: help test vet build check-deploy-target deploy
help:
@printf '%s\n' \
'Usage:' \
' make deploy one@devcpone.aplikasi.web.id' \
' make deploy DEPLOY_TARGET=one@devcpone.aplikasi.web.id' \
'' \
'Optional overrides:' \
' REMOTE_DIR=auto (default: $${HOME}/apps di server)' \
' SERVICE=cpone-middleware.service' \
' SERVICE_SCOPE=auto|user|system' \
' RESTART_MODE=systemd-kill|systemctl' \
' SSH_OPTIONS="-p 22 -o ConnectTimeout=10"' \
' SSH_TIMEOUT=45s TRANSFER_TIMEOUT=120s'
test:
go test ./...
vet:
go vet ./...
build: test vet
@mkdir -p "$$(dirname "$(BUILD_BINARY)")"
CGO_ENABLED=$(CGO_ENABLED) GOOS=$(GOOS) GOARCH=$(GOARCH) \
go build -trimpath -ldflags='-s -w' -o "$(BUILD_BINARY)" ./cmd/server
@printf 'Built %s\n' "$(BUILD_BINARY)"
check-deploy-target:
@if [[ -z "$(DEPLOY_TARGET)" ]]; then \
echo 'Error: target server belum diisi.' >&2; \
echo 'Contoh: make deploy one@devcpone.aplikasi.web.id' >&2; \
exit 2; \
fi
deploy: check-deploy-target build
@APP_NAME="$(APP_NAME)" \
BUILD_BINARY="$(BUILD_BINARY)" \
REMOTE_DIR="$(REMOTE_DIR)" \
REMOTE_BINARY="$(REMOTE_BINARY)" \
SERVICE="$(SERVICE)" \
SERVICE_SCOPE="$(SERVICE_SCOPE)" \
RESTART_MODE="$(RESTART_MODE)" \
SSH_OPTIONS="$(SSH_OPTIONS)" \
SSH_TIMEOUT="$(SSH_TIMEOUT)" \
TRANSFER_TIMEOUT="$(TRANSFER_TIMEOUT)" \
./scripts/deploy.sh "$(DEPLOY_TARGET)"
# Extra command-line words are treated as the positional deploy target.
ifneq ($(strip $(POSITIONAL_TARGET)),)
.PHONY: $(POSITIONAL_TARGET)
$(POSITIONAL_TARGET):
@:
endif