diff --git a/Taskfile.yml b/Taskfile.yml index 8aa2988..58e6d61 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -2,20 +2,9 @@ version: '3' vars: SERVER: bl@flo-homeserver - REMOTE_MACHINE: bl@flo-homeserver PKG: main BINARY_DIR: ./bin DEV_BINARY_DIR: ./local - SHORT_SHA: - sh: git rev-parse --short HEAD 2>/dev/null || echo nogit - BRANCH: - sh: git rev-parse --abbrev-ref HEAD 2>/dev/null || echo local - DIRTY: - sh: if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then if git diff --quiet && git diff --cached --quiet; then echo clean; else echo dirty; fi; else echo clean; fi - RANDOM_WORDS: - sh: if [ -f build/words.txt ]; then awk 'BEGIN{srand()} /^[[:lower:]]+$/ && length($0) >= 4 && length($0) <= 10 { words[++n]=$0 } END { if (n < 1) { print "word-list"; exit } print words[int(rand()*n)+1] "-" words[int(rand()*n)+1] }' build/words.txt; else echo word-list; fi - VERSION_STR: "version [{{.SHORT_SHA}}-{{.BRANCH}}/{{.RANDOM_WORDS}}]. git is [{{.DIRTY}}]." - LD_FLAGS: "-X '{{.PKG}}.Version={{.VERSION_STR}}'" BINARY_API: "{{.BINARY_DIR}}/go-api" DEV_BINARY_API: "{{.DEV_BINARY_DIR}}/go-api/" @@ -32,10 +21,16 @@ tasks: cmds: - go tool task clean-api - mkdir -p {{.BINARY_DIR}} - - echo "building {{.BINARY_API}} with version {{.VERSION_STR}}" - - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "{{.LD_FLAGS}}" -o {{.BINARY_API}} ./cmd/api + - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o {{.BINARY_API}} ./cmd/api - # ── DEV Build ────────────────────────────────────────────────────────────── + deploy: + desc: build api, stage files, and deploy api to remote server + deps: [build] + cmds: + - ssh {{.SERVER}} "rm -rf /tmp/go-api-deploy && mkdir -p /tmp/go-api-deploy" + - rsync -avz --delete {{.BINARY_API}} {{.SERVER}}:/tmp/go-api-deploy/ + - ssh -t {{.SERVER}} "sudo rsync -a --delete --exclude='.env' --exclude='config.json' --exclude='data/' --chown=go-api:go-api /tmp/go-api-deploy/ /opt/go-api/ && sudo systemctl restart go-api" + - ssh {{.SERVER}} "rm -rf /tmp/go-api-deploy" dev-build: desc: runs DEV for vet, fmt, and build DEV api @@ -46,21 +41,7 @@ tasks: cmds: - go tool task dev-clean-api - mkdir -p {{.DEV_BINARY_API}} - - echo "building DEV {{.DEV_BINARY_API}} with version {{.VERSION_STR}}" - - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "{{.LD_FLAGS}}" -o {{.DEV_BINARY_API}}/go-api ./cmd/api - - # ── Deploy individual ────────────────────────────────────────────────────── - - deploy-api: - desc: build api, stage files, and deploy api to remote server - deps: [build-api] - cmds: - - ssh {{.REMOTE_MACHINE}} "rm -rf /tmp/go-api-deploy && mkdir -p /tmp/go-api-deploy" - - rsync -avz --delete {{.BINARY_API}} {{.REMOTE_MACHINE}}:/tmp/go-api-deploy/ - - ssh -t {{.REMOTE_MACHINE}} "sudo rsync -a --delete --exclude='.env' --exclude='config.json' --exclude='data/' --chown=go-api:go-api /tmp/go-api-deploy/ /opt/go-api/ && sudo systemctl restart go-api" - - ssh {{.REMOTE_MACHINE}} "rm -rf /tmp/go-api-deploy" - - # ── DEV START individual ────────────────────────────────────────────────── + - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o {{.DEV_BINARY_API}}/go-api ./cmd/api dev-start-api: desc: build api, create dirs, and start DEV api binary @@ -75,8 +56,6 @@ tasks: cmds: - go run ./cmd/api - # ── Helpers ──────────────────────────────────────────────────────────────── - vet: cmds: - go vet ./...