-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
141 lines (113 loc) · 4.46 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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
VERSION = 0.0.1
NAME = registry.nocsi.org
CREATE_DATE := $(shell date +%FT%T%Z)
MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
CURRENT_DIR := $(shell dirname $(MKFILE_PATH))
DOCKER_BIN := $(shell which docker)
all: build test
.PHONY: check.env
check.env:
ifndef DOCKER_BIN
$(error The docker command is not found. Verify that Docker is installed and accessible)
endif
### Base images
.PHONY: alpine
alpine:
@echo " "
@echo " "
@echo "Building 'base/alpine' image..."
@echo " "
$(DOCKER_BIN) build -t $(NAME)/base:alpine $(CURRENT_DIR)/base/alpine
.PHONY: ubuntu
ubuntu:
@echo " "
@echo " "
@echo "Building 'base/ubuntu' image..."
@echo " "
$(DOCKER_BIN) build -t $(NAME)/base:ubuntu $(CURRENT_DIR)/base/ubuntu
.PHONY: debian
debian:
@echo " "
@echo " "
@echo "Building 'base/debian' image..."
@echo " "
$(DOCKER_BIN) build -t $(NAME)/base:debian $(CURRENT_DIR)/base/debian
.PHONY: centos
centos:
@echo " "
@echo " "
@echo "Building 'base/centos' image..."
@echo " "
$(DOCKER_BIN) build -t $(NAME)/base:centos $(CURRENT_DIR)/base/centos
.PHONY: ubuntu-slim
ubuntu-slim:
@echo " "
@echo " "
@echo "Building 'base/ubuntu-slim' image..."
@echo " "
cd $(CURRENT_DIR)/base/ubuntu-slim && $(MAKE) container
cd $(CURRENT_DIR)
.PHONY: base
base: alpine ubuntu debian centos ubuntu-slim
@echo " "
@echo " "
@echo "Base images have been built."
@echo " "
.PHONY: base_test
base_test:
@if ! $(DOCKER_BIN) run $(NAME)/base:ubuntu /bin/sh -c 'cat /etc/*-release' | grep -q -F Ubuntu; then false; fi
@if ! $(DOCKER_BIN) run $(NAME)/base:ubuntu-slim /bin/sh -c 'cat /etc/*-release' | grep -q -F Ubuntu; then false; fi
@if ! $(DOCKER_BIN) run $(NAME)/base:debian /bin/sh -c 'cat /etc/*-release' | grep -q -F Debian; then false; fi
@if ! $(DOCKER_BIN) run $(NAME)/base:centos /bin/sh -c 'cat /etc/*-release' | grep -q -F CentOS; then false; fi
@if ! $(DOCKER_BIN) run $(NAME)/base:alpine /bin/sh -c 'cat /etc/*-release' | grep -q -F Alpine; then false; fi
@echo " "
@echo " "
@echo "Base tests have completed."
@echo " "
.PHONY: base_rm
base_rm:
@if docker images $(NAME)/base | awk '{ print $$2 }' | grep -q -F alpine; then $(DOCKER_BIN) rmi $(NAME)/base:alpine; fi
@if docker images $(NAME)/base | awk '{ print $$2 }' | grep -q -F ubuntu-slim; then $(DOCKER_BIN) rmi $(NAME)/base:ubuntu-slim; fi
@if docker images $(NAME)/base | awk '{ print $$2 }' | grep -q -F ubuntu; then $(DOCKER_BIN) rmi $(NAME)/base:ubuntu; fi
@if docker images $(NAME)/base | awk '{ print $$2 }' | grep -q -F centos; then $(DOCKER_BIN) rmi $(NAME)/base:centos; fi
@if docker images $(NAME)/base | awk '{ print $$2 }' | grep -q -F debian; then $(DOCKER_BIN) rmi $(NAME)/base:debian; fi
.PHONY: build
build: base
@echo " "
@echo " "
@echo "All done with builds."
@echo " "
.PHONY: test
test: base_test
@echo " "
@echo " "
@echo "All done with tests."
@echo " "
# Push updates to Docker's registry
.PHONY: release_base
release_base:
@if ! $(DOCKER_BIN) images $(NAME)/base | awk '{ print $$2 }' | grep -q -F alpine; then echo "$(NAME)/base:alpine is not yet built. Please run 'make build'"; false; fi
@if ! $(DOCKER_BIN) images $(NAME)/base | awk '{ print $$2 }' | grep -q -F ubuntu-slim; then echo "$(NAME)/base:ubuntu-slim is not yet built. Please run 'make build'"; false; fi
@if ! $(DOCKER_BIN) images $(NAME)/base | awk '{ print $$2 }' | grep -q -F ubuntu; then echo "$(NAME)/base:ubuntu is not yet built. Please run 'make build'"; false; fi
@if ! $(DOCKER_BIN) images $(NAME)/base | awk '{ print $$2 }' | grep -q -F debian; then echo "$(NAME)/base:debian is not yet built. Please run 'make build'"; false; fi
@if ! $(DOCKER_BIN) images $(NAME)/base | awk '{ print $$2 }' | grep -q -F centos; then echo "$(NAME)/base:centos is not yet built. Please run 'make build'"; false; fi
$(DOCKER_BIN) push $(NAME)/base
.PHONY: release
release: release_base
# Clean-up the cruft
.PHONY: clean
clean: clean_untagged clean_slim base_rm clean_untagged
rm -rf $(CURRENT_DIR)/mush/terraform.tfvars
rm -rf $(CURRENT_DIR)/jinja2/some.json
.PHONY: clean_slim
clean_slim:
cd $(CURRENT_DIR)/base/ubuntu-slim && $(MAKE) clean
cd $(CURRENT_DIR)
# docker images -q --filter "dangling=true" | xargs -l docker rmi
# docker images --no-trunc | grep none | awk '{print $$3}' | xargs -r docker rmi
.PHONY: clean_untagged
clean_untagged: clean_stopped
docker images --no-trunc | grep none | awk '{print $$3}' | xargs -r docker rmi
.PHONY: clean_stopped
clean_stopped:
for i in `docker ps --no-trunc -a -q`;do docker rm $$i;done