Pull-based GitOps-style Docker Compose deployer: polls a (private) Git repo, detects changed stacks and reconciles only the affected
at main 61 lines 2.6 kB view raw
1.PHONY: build build-version major minor feature 2 3VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev") 4COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown") 5BUILD_DATE ?= $(shell date -u +%Y-%m-%dT%H:%M:%SZ) 6 7LDFLAGS = -s -w \ 8 -X github.com/aottr/compose-sync/internal/version.Version=$(VERSION) \ 9 -X github.com/aottr/compose-sync/internal/version.Commit=$(COMMIT) \ 10 -X github.com/aottr/compose-sync/internal/version.BuildDate=$(BUILD_DATE) 11 12# Get current version tag (removes 'v' prefix if present, defaults to 0.0.0) 13CURRENT_TAG := $(shell git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//' || echo "0.0.0") 14CURRENT_MAJOR := $(shell echo "$(CURRENT_TAG)" | awk -F. '{print $$1}' | grep -E '^[0-9]+$$' || echo "0") 15CURRENT_MINOR := $(shell echo "$(CURRENT_TAG)" | awk -F. '{print $$2}' | grep -E '^[0-9]+$$' || echo "0") 16CURRENT_PATCH := $(shell echo "$(CURRENT_TAG)" | awk -F. '{print $$3}' | grep -E '^[0-9]+$$' || echo "0") 17 18build: 19 go build -ldflags "$(LDFLAGS)" -o compose-sync ./cmd/compose-sync 20 21build-version: build 22 @./compose-sync -version 23 24major: 25 @CURRENT="$(CURRENT_TAG)"; \ 26 if [ -z "$$CURRENT" ] || [ "$$CURRENT" = "0.0.0" ]; then \ 27 NEW_VERSION="1.0.0"; \ 28 else \ 29 MAJOR=$$(echo "$$CURRENT" | awk -F. '{print $$1}'); \ 30 NEW_VERSION="$$(($$MAJOR + 1)).0.0"; \ 31 fi; \ 32 echo "Bumping major version: $$CURRENT -> $$NEW_VERSION"; \ 33 git tag -s "v$$NEW_VERSION" -m "Release v$$NEW_VERSION"; \ 34 echo "Created signed tag v$$NEW_VERSION. Push with: git push origin v$$NEW_VERSION" 35 36minor: 37 @CURRENT="$(CURRENT_TAG)"; \ 38 if [ -z "$$CURRENT" ] || [ "$$CURRENT" = "0.0.0" ]; then \ 39 NEW_VERSION="0.1.0"; \ 40 else \ 41 MAJOR=$$(echo "$$CURRENT" | awk -F. '{print $$1}'); \ 42 MINOR=$$(echo "$$CURRENT" | awk -F. '{print $$2}'); \ 43 NEW_VERSION="$$MAJOR.$$(($$MINOR + 1)).0"; \ 44 fi; \ 45 echo "Bumping minor version: $$CURRENT -> $$NEW_VERSION"; \ 46 git tag -s "v$$NEW_VERSION" -m "Release v$$NEW_VERSION"; \ 47 echo "Created signed tag v$$NEW_VERSION. Push with: git push origin v$$NEW_VERSION" 48 49patch: 50 @CURRENT="$(CURRENT_TAG)"; \ 51 if [ -z "$$CURRENT" ] || [ "$$CURRENT" = "0.0.0" ]; then \ 52 NEW_VERSION="0.0.1"; \ 53 else \ 54 MAJOR=$$(echo "$$CURRENT" | awk -F. '{print $$1}'); \ 55 MINOR=$$(echo "$$CURRENT" | awk -F. '{print $$2}'); \ 56 PATCH=$$(echo "$$CURRENT" | awk -F. '{print $$3}'); \ 57 NEW_VERSION="$$MAJOR.$$MINOR.$$(($$PATCH + 1))"; \ 58 fi; \ 59 echo "Bumping patch version: $$CURRENT -> $$NEW_VERSION"; \ 60 git tag -s "v$$NEW_VERSION" -m "Release v$$NEW_VERSION"; \ 61 echo "Created signed tag v$$NEW_VERSION. Push with: git push origin v$$NEW_VERSION"