1+ include .env
2+
3+ # Variables
4+ # DOCKER_REGISTRY ?=
5+ DOCKER_REPO ?= raspdevpy/$(shell basename `git remote get-url origin`)
6+ VERSION ?= $(shell git describe --tags --always --dirty)
7+ LATEST_TAG := latest
8+ BUILD_DATE := $(shell date -u +"% Y-% m-% dT% H:% M:% SZ")
9+ GIT_COMMIT := $(shell git rev-parse HEAD)
10+
11+ # Docker image tags
12+ IMAGE_TAG := $(DOCKER_REGISTRY ) /$(DOCKER_REPO ) :$(VERSION )
13+ LATEST_IMAGE := $(DOCKER_REGISTRY ) /$(DOCKER_REPO ) :$(LATEST_TAG )
14+
15+ .PHONY : help build push release clean login test
16+
17+ help : # # Show this help message
18+ @echo " Available targets:"
19+ @awk ' BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " %-15s %s\n", $$1, $$2}' $(MAKEFILE_LIST )
20+
21+ build : # # Build Docker image
22+ @echo " Building Docker image: $( IMAGE_TAG) "
23+ docker build \
24+ --build-arg BUILD_DATE=$(BUILD_DATE ) \
25+ --build-arg GIT_COMMIT=$(GIT_COMMIT ) \
26+ --build-arg VERSION=$(VERSION ) \
27+ -t $(IMAGE_TAG ) \
28+ -t $(LATEST_IMAGE ) \
29+ .
30+ @echo " Built: $( IMAGE_TAG) "
31+ @echo " Built: $( LATEST_IMAGE) "
32+
33+ test : # # Test the Docker image
34+ @echo " Testing Docker image: $( IMAGE_TAG) "
35+ # docker run --rm $(IMAGE_TAG) curl http://localhost:80/index.html
36+
37+ test-interactive : # # Run an interactive shell in the Docker image for testing
38+ @echo " Starting interactive shell in Docker image: $( IMAGE_TAG) "
39+ docker run --rm -it $(IMAGE_TAG ) sh
40+
41+ login : # # Login to Docker registry
42+ @echo " Logging into Docker registry: $( DOCKER_REGISTRY) "
43+ docker login $(DOCKER_REGISTRY )
44+
45+ push : # # Push Docker image to registry
46+ @echo " Pushing Docker image: $( IMAGE_TAG) "
47+ docker push $(IMAGE_TAG )
48+ docker push $(LATEST_IMAGE )
49+ @echo " Pushed: $( IMAGE_TAG) "
50+ @echo " Pushed: $( LATEST_IMAGE) "
51+
52+ release : build test push # # Build, test and push Docker image
53+ @echo " Release completed for version: $( VERSION) "
54+
55+ clean : # # Remove local Docker images
56+ @echo " Cleaning up local Docker images"
57+ -docker rmi $(IMAGE_TAG ) 2> /dev/null || true
58+ -docker rmi $(LATEST_IMAGE ) 2> /dev/null || true
59+
60+ # CI/CD helpers
61+ ci-info : # # Show build information for CI
62+ @echo " VERSION=$( VERSION) "
63+ @echo " IMAGE_TAG=$( IMAGE_TAG) "
64+ @echo " BUILD_DATE=$( BUILD_DATE) "
65+ @echo " GIT_COMMIT=$( GIT_COMMIT) "
0 commit comments