-
-
Notifications
You must be signed in to change notification settings - Fork 11
/
Makefile
104 lines (87 loc) · 3.33 KB
/
Makefile
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
ifneq (,)
.error This Makefile requires GNU Make.
endif
# Ensure additional Makefiles are present
MAKEFILES = Makefile.docker Makefile.lint
$(MAKEFILES): URL=https://raw.githubusercontent.com/devilbox/makefiles/master/$(@)
$(MAKEFILES):
@if ! (curl --fail -sS -o $(@) $(URL) || wget -O $(@) $(URL)); then \
echo "Error, curl or wget required."; \
echo "Exiting."; \
false; \
fi
include $(MAKEFILES)
# Set default Target
.DEFAULT_GOAL := help
# -------------------------------------------------------------------------------------------------
# Default configuration
# -------------------------------------------------------------------------------------------------
# Own vars
TAG = latest
# Makefile.docker overwrites
# NAME = no default
# VERSION = no default
IMAGE = devilbox/mysql
DIR = Dockerfiles
FILE = $(NAME)-$(VERSION)
TAG = latest
ARCH = linux/amd64
ifeq ($(strip $(TAG)),latest)
DOCKER_TAG := $(NAME)-$(VERSION)
endif
ifneq ($(strip $(TAG)),latest)
DOCKER_TAG := $(NAME)-$(VERSION)-$(TAG)
endif
# -------------------------------------------------------------------------------------------------
# Default Target
# -------------------------------------------------------------------------------------------------
.PHONY: help
help:
@echo "lint Lint project files and repository"
@echo
@echo "build [ARCH=...] [TAG=...] Build Docker image"
@echo "rebuild [ARCH=...] [TAG=...] Build Docker image without cache"
@echo "push [ARCH=...] [TAG=...] Push Docker image to Docker hub"
@echo
@echo "manifest-create [ARCHES=...] [TAG=...] Create multi-arch manifest"
@echo "manifest-push [TAG=...] Push multi-arch manifest"
@echo
@echo "test [ARCH=...] Test built Docker image"
@echo
# -------------------------------------------------------------------------------------------------
# Build Targets
# -------------------------------------------------------------------------------------------------
.PHONY: build
build: docker-arch-build
.PHONY: rebuild
rebuild: docker-arch-rebuild
.PHONY: push
push: docker-arch-push
# -------------------------------------------------------------------------------------------------
# Manifest Targets
# -------------------------------------------------------------------------------------------------
.PHONY: manifest-create
manifest-create: docker-manifest-create
.PHONY: manifest-push
manifest-push: docker-manifest-push
# -------------------------------------------------------------------------------------------------
# Test Targets
# -------------------------------------------------------------------------------------------------
.PHONY: test
test:
ifeq ($(strip $(NAME)),)
@$(info This make target requires the NAME variable to be set.)
@$(info make test NAME= VERSION=)
@$(info )
@$(error Exiting)
endif
ifeq ($(strip $(VERSION)),)
@$(info This make target requires the VERSION variable to be set.)
@$(info make test NAME= VERSION=)
@$(info )
@$(error Exiting)
endif
@echo "################################################################################"
@echo "# Testing $(IMAGE):$(DOCKER_TAG) $(ARCH)"
@echo "################################################################################"
./tests/tests.sh "$(NAME)" "$(VERSION)" "${DOCKER_TAG}" "$(ARCH)"