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