34fd1a5a4d
- Introduced a Dockerfile for building the application with Go and Node.js dependencies. - Added a docker-entrypoint.sh script to manage container execution. - Created a .dockerignore file to exclude unnecessary files from the Docker context. - Updated Makefile to include a new target for building the Docker image. - Added CI workflows for testing, formatting, and releasing artifacts in Gitea.
53 lines
1.4 KiB
Makefile
53 lines
1.4 KiB
Makefile
APP_NAME := scratchbox
|
|
CMD_DIR := ./cmd/scratchbox
|
|
BIN_DIR := ./bin
|
|
BIN := $(BIN_DIR)/$(APP_NAME)
|
|
CONFIG ?= config.yaml
|
|
DOCKER_IMAGE ?= scratchbox:dev
|
|
|
|
.PHONY: help run dev config build docker test test-race fmt clean
|
|
|
|
help:
|
|
@echo "Targets:"
|
|
@echo " make run - Alias for make dev"
|
|
@echo " make dev - Build and run server (CONFIG=$(CONFIG))"
|
|
@echo " make config - Write default config to $(CONFIG) and generate sibling config.key if missing"
|
|
@echo " make build - Build Svelte UI and binary to $(BIN)"
|
|
@echo " make docker - Build Docker image (DOCKER_IMAGE=$(DOCKER_IMAGE))"
|
|
@echo " make test - Run all Go tests with timeout and shuffle"
|
|
@echo " make test-race - Run all Go tests with race detector and timeout"
|
|
@echo " make fmt - Format Go code"
|
|
@echo " make clean - Remove built artifacts"
|
|
|
|
run: dev
|
|
|
|
dev: build
|
|
$(BIN) server --config $(CONFIG)
|
|
|
|
config:
|
|
mkdir -p "$(dir $(CONFIG))"
|
|
go run $(CMD_DIR) generate-config > "$(CONFIG)"
|
|
@if [ ! -f "$(dir $(CONFIG))config.key" ]; then \
|
|
go run $(CMD_DIR) generate-key > "$(dir $(CONFIG))config.key"; \
|
|
fi
|
|
|
|
build: clean
|
|
npm --prefix ./web/ui run build
|
|
mkdir -p $(BIN_DIR)
|
|
CGO_ENABLED=0 go build -o $(BIN) $(CMD_DIR)
|
|
|
|
docker:
|
|
docker build -t $(DOCKER_IMAGE) .
|
|
|
|
test:
|
|
go test -timeout 30s -shuffle=on ./...
|
|
|
|
test-race:
|
|
go test -race -timeout 30s -shuffle=on ./...
|
|
|
|
fmt:
|
|
go fmt ./...
|
|
|
|
clean:
|
|
rm -rf $(BIN_DIR)
|