57 lines
1.5 KiB
Makefile
57 lines
1.5 KiB
Makefile
|
|
SHELL := /bin/bash
|
||
|
|
|
||
|
|
PNPM ?= pnpm
|
||
|
|
GO ?= go
|
||
|
|
CONTAINER_REG ?= repo.ssp-itinfra.com/admin
|
||
|
|
IMAGE_NAME ?= shooting-event
|
||
|
|
ARCH ?= amd64
|
||
|
|
BUILD_DATE ?= $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||
|
|
BUILD_VERSION ?= $(shell git describe --tags --always --dirty)
|
||
|
|
|
||
|
|
.PHONY: install dev dev-backend dev-frontend build build-frontend build-backend docker-build docker-run clean
|
||
|
|
|
||
|
|
install:
|
||
|
|
cd frontend && $(PNPM) install
|
||
|
|
cd backend && $(GO) mod tidy
|
||
|
|
|
||
|
|
dev-backend:
|
||
|
|
cd backend && $(GO) run .
|
||
|
|
|
||
|
|
dev-frontend:
|
||
|
|
cd frontend && $(PNPM) dev
|
||
|
|
|
||
|
|
dev:
|
||
|
|
@set -euo pipefail; \
|
||
|
|
trap 'kill 0' INT TERM EXIT; \
|
||
|
|
$(MAKE) dev-backend & \
|
||
|
|
$(MAKE) dev-frontend & \
|
||
|
|
wait
|
||
|
|
|
||
|
|
build-frontend:
|
||
|
|
cd frontend && $(PNPM) build
|
||
|
|
|
||
|
|
build-backend:
|
||
|
|
mkdir -p bin
|
||
|
|
cd backend && $(GO) build -o ../bin/shooting-event .
|
||
|
|
|
||
|
|
build: build-frontend
|
||
|
|
rm -rf backend/web
|
||
|
|
mkdir -p backend/web
|
||
|
|
cp -R frontend/dist/. backend/web/
|
||
|
|
$(MAKE) build-backend
|
||
|
|
|
||
|
|
docker-build:
|
||
|
|
docker buildx build --load --platform=linux/$(ARCH) -t $(CONTAINER_REG)/$(IMAGE_NAME):$(ARCH) .
|
||
|
|
docker tag $(CONTAINER_REG)/$(IMAGE_NAME):$(ARCH) $(CONTAINER_REG)/$(IMAGE_NAME):$(ARCH)-latest
|
||
|
|
docker tag $(CONTAINER_REG)/$(IMAGE_NAME):$(ARCH) $(CONTAINER_REG)/$(IMAGE_NAME):$(ARCH)-$(BUILD_VERSION)
|
||
|
|
docker push $(CONTAINER_REG)/$(IMAGE_NAME):$(ARCH)
|
||
|
|
docker push $(CONTAINER_REG)/$(IMAGE_NAME):$(ARCH)-latest
|
||
|
|
docker push $(CONTAINER_REG)/$(IMAGE_NAME):$(ARCH)-$(BUILD_VERSION)
|
||
|
|
|
||
|
|
docker-run:
|
||
|
|
mkdir -p data
|
||
|
|
docker run --rm -p 8080:8080 -v $(PWD)/data:/app/data $(CONTAINER_REG)/$(IMAGE_NAME):$(ARCH)
|
||
|
|
|
||
|
|
clean:
|
||
|
|
rm -rf bin frontend/dist backend/web
|