137 lines
4.6 KiB
Makefile
137 lines
4.6 KiB
Makefile
# Default target
|
|
.DEFAULT_GOAL := help
|
|
|
|
# Build configuration
|
|
VERSION := $(shell cat ../VERSION 2>/dev/null || echo "0.0.0-dev")
|
|
BUILD_DIR := build
|
|
DIST_DIR := dist
|
|
DEB_DIR := debian-package
|
|
|
|
# Git information
|
|
GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
|
BUILD_TIME := $(shell date -u '+%Y-%m-%d_%H:%M:%S')
|
|
|
|
# Source paths
|
|
API_SOURCE := ../api
|
|
WEB_SOURCE := ../web
|
|
|
|
# Output files
|
|
ARM64_BINARY := $(BUILD_DIR)/wild-cloud-central-arm64
|
|
AMD64_BINARY := $(BUILD_DIR)/wild-cloud-central-amd64
|
|
WEB_DIST_MARKER := $(BUILD_DIR)/.web-built
|
|
ARM64_DEB := $(DIST_DIR)/packages/wild-cloud-central_$(VERSION)_arm64.deb
|
|
AMD64_DEB := $(DIST_DIR)/packages/wild-cloud-central_$(VERSION)_amd64.deb
|
|
|
|
# Gitea release configuration
|
|
GITEA_URL := https://git.civilsociety.dev
|
|
GITEA_OWNER := wild-cloud
|
|
GITEA_REPO := wild-cloud
|
|
RELEASE_TAG := v$(VERSION)
|
|
|
|
.PHONY: help clean version build build-all package package-all repo deploy-repo release
|
|
|
|
help:
|
|
@echo "📦 Wild Cloud Central Package Builder"
|
|
@echo ""
|
|
@echo "This repository builds .deb packages from the monorepo."
|
|
@echo "For development, use the individual component directories:"
|
|
@echo " - api (Go daemon)"
|
|
@echo " - web (React frontend)"
|
|
@echo ""
|
|
@echo "📦 Build targets:"
|
|
@echo " build - Build for current architecture (amd64)"
|
|
@echo " build-all - Build all architectures"
|
|
@echo ""
|
|
@echo "📋 Package targets:"
|
|
@echo " package - Create .deb package (amd64)"
|
|
@echo " package-all - Create all .deb packages"
|
|
@echo ""
|
|
@echo "🚀 Repository targets:"
|
|
@echo " repo - Build APT repository from packages"
|
|
@echo " deploy-repo - Deploy repository to server"
|
|
@echo ""
|
|
@echo "🎯 Release targets:"
|
|
@echo " release - Create/update Gitea release with packages"
|
|
@echo ""
|
|
@echo "🛠️ Utilities:"
|
|
@echo " clean - Remove all build artifacts"
|
|
@echo " version - Show build information"
|
|
@echo ""
|
|
@echo "Version Management:"
|
|
@echo " Current version: $(VERSION) (from ../VERSION)"
|
|
@echo " To bump version: echo '0.1.2' > ../VERSION"
|
|
@echo ""
|
|
@echo "Environment variables:"
|
|
@echo " GITEA_TOKEN - Gitea API token (required for release)"
|
|
@echo " Run: source .envrc"
|
|
|
|
clean:
|
|
@echo "🧹 Cleaning build artifacts..."
|
|
@rm -rf $(BUILD_DIR) $(DIST_DIR) $(DEB_DIR)-* $(DEB_DIR)
|
|
@echo "✅ Clean complete"
|
|
|
|
version:
|
|
@echo "Version: $(VERSION)"
|
|
@echo "Git Commit: $(GIT_COMMIT)"
|
|
@echo "Build Time: $(BUILD_TIME)"
|
|
|
|
# Web app build - track with marker file
|
|
$(WEB_DIST_MARKER): $(shell find $(WEB_SOURCE)/src -type f 2>/dev/null | head -100) $(WEB_SOURCE)/package.json
|
|
@echo "🔧 Building web application..."
|
|
@ARCH=amd64 VERSION=$(VERSION) ./scripts/build-package.sh
|
|
@touch $(WEB_DIST_MARKER)
|
|
@echo "✅ Web app built"
|
|
|
|
# ARM64 binary
|
|
$(ARM64_BINARY): $(shell find $(API_SOURCE) -name '*.go' 2>/dev/null | head -100)
|
|
@echo "🔧 Building arm64 binary..."
|
|
@mkdir -p $(BUILD_DIR)/bin
|
|
@cd $(API_SOURCE) && GOOS=linux GOARCH=arm64 go build -ldflags="-X main.Version=$(VERSION)" -o ../dist/$(ARM64_BINARY) .
|
|
@echo "✅ Build complete: $(ARM64_BINARY)"
|
|
|
|
# AMD64 binary
|
|
$(AMD64_BINARY): $(shell find $(API_SOURCE) -name '*.go' 2>/dev/null | head -100)
|
|
@echo "🔧 Building amd64 binary..."
|
|
@mkdir -p $(BUILD_DIR)/bin
|
|
@cd $(API_SOURCE) && GOOS=linux GOARCH=amd64 go build -ldflags="-X main.Version=$(VERSION)" -o ../dist/$(AMD64_BINARY) .
|
|
@echo "✅ Build complete: $(AMD64_BINARY)"
|
|
|
|
# ARM64 package
|
|
$(ARM64_DEB): $(ARM64_BINARY) $(WEB_DIST_MARKER)
|
|
@echo "📦 Creating arm64 .deb package..."
|
|
@./scripts/package-deb.sh arm64 $(ARM64_BINARY) $(VERSION)
|
|
@echo "✅ Package created: $(ARM64_DEB)"
|
|
|
|
# AMD64 package
|
|
$(AMD64_DEB): $(AMD64_BINARY) $(WEB_DIST_MARKER)
|
|
@echo "📦 Creating amd64 .deb package..."
|
|
@./scripts/package-deb.sh amd64 $(AMD64_BINARY) $(VERSION)
|
|
@echo "✅ Package created: $(AMD64_DEB)"
|
|
|
|
# Convenience targets
|
|
build: $(AMD64_BINARY) $(WEB_DIST_MARKER)
|
|
|
|
build-all: $(ARM64_BINARY) $(AMD64_BINARY) $(WEB_DIST_MARKER)
|
|
|
|
package: $(AMD64_DEB)
|
|
|
|
package-all: $(ARM64_DEB) $(AMD64_DEB)
|
|
|
|
repo: $(ARM64_DEB) $(AMD64_DEB)
|
|
@echo "🏗️ Building APT repository..."
|
|
@./scripts/build-apt-repository.sh
|
|
|
|
deploy-repo: repo
|
|
@echo "🚀 Deploying APT repository..."
|
|
@./scripts/deploy-apt-repository.sh
|
|
|
|
release: $(ARM64_DEB) $(AMD64_DEB)
|
|
@echo "🎯 Creating release $(RELEASE_TAG)..."
|
|
@if [ -z "$(GITEA_TOKEN)" ]; then \
|
|
echo "❌ Error: GITEA_TOKEN environment variable not set"; \
|
|
echo " Get a token from $(GITEA_URL)/user/settings/applications"; \
|
|
echo " Or run: source .envrc"; \
|
|
exit 1; \
|
|
fi
|
|
@./scripts/create-gitea-release.sh "$(GITEA_URL)" "$(GITEA_OWNER)" "$(GITEA_REPO)" "$(RELEASE_TAG)" "$(VERSION)" "$(GITEA_TOKEN)"
|