27 lines
1.3 KiB
Makefile
27 lines
1.3 KiB
Makefile
SHELL := /bin/bash
|
|
.SHELLFLAGS := -eu -o pipefail -c
|
|
.DEFAULT_GOAL := help
|
|
DEPLOY_HOST ?= fzc
|
|
APP ?= cube
|
|
APPS := cube articulate karaoke notes simpleasm video2slides webgl werewolf llm-proxy
|
|
NAMESPACE = $(if $(filter llm-proxy,$(APP)),llm-proxy,cube-$(APP))
|
|
RELEASE_TAG := $(shell git rev-parse --short=12 HEAD)-$(shell date -u +%Y%m%d%H%M%S)
|
|
IMAGE ?= cube-local-$(APP):$(RELEASE_TAG)
|
|
.PHONY: help guard build deploy deploy-write
|
|
help:
|
|
@echo 'make deploy APP=<$(APPS)>; make deploy-write'
|
|
guard:
|
|
@case ' $(APPS) ' in *' $(APP) '*) ;; *) echo 'Unknown/decommissioned app'; exit 1;; esac
|
|
@test -z "$$(git status --porcelain)" || { echo 'Review/commit source changes first'; exit 1; }
|
|
build: guard
|
|
cargo test -p $(APP)
|
|
CC_x86_64_unknown_linux_musl=musl-gcc cargo build --release --target x86_64-unknown-linux-musl -p $(APP)
|
|
@if [ -f apps/$(APP)/frontend/package.json ]; then cd apps/$(APP)/frontend && npm ci && npm run build; fi
|
|
docker build -f apps/$(APP)/Dockerfile -t $(IMAGE) .
|
|
deploy: guard
|
|
$(MAKE) build APP=$(APP) IMAGE=$(IMAGE)
|
|
docker save $(IMAGE) | ssh $(DEPLOY_HOST) 'sudo k3s ctr -n k8s.io images import -'
|
|
python3 scripts/release_remote.py --host $(DEPLOY_HOST) --namespace $(NAMESPACE) --deployment $(APP) --container $(APP) --image $(IMAGE)
|
|
deploy-write:
|
|
$(MAKE) -C apps/write deploy HOST=$(DEPLOY_HOST)
|