-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
167 lines (135 loc) · 5.95 KB
/
Copy pathMakefile
File metadata and controls
167 lines (135 loc) · 5.95 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
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
HOST := 172.17.0.1
# certificate authority vars
CA :=
UPDATE_CA_COMMAND :=
SSL_DAYS := 3650
ifneq ($(shell type update-ca-trust 2> /dev/null),)
CA := /etc/pki/ca-trust/source/anchors/imatic__docker-tools__registry.pem /etc/pki/ca-trust/source/anchors/imatic__docker-tools__auth.pem
UPDATE_CA_COMMAND := update-ca-trust extract
else ifneq ($(shell type update-ca-certificates 2> /dev/null),)
CA := /usr/local/share/ca-certificates/imatic__docker-tools__registry.crt /usr/local/share/ca-certificates/imatic__docker-tools__auth.crt
UPDATE_CA_COMMAND := update-ca-certificates
else
$(error Command updating ca certificates not found)
endif
CA_DEPS := $(foreach target,"${CA}",tests/fixtures/docker_registry/config/$(subst imatic__docker-tools__,,$(notdir $(basename "${target}")))/ssl/ca.pem)
$(CA_DEPS): ;
%.crt: $(CA_DEPS)
cp "tests/fixtures/docker_registry/config/$(subst imatic__docker-tools__,,$(notdir $(basename $@)))/ssl/ca.pem" "${@}"
%.pem: $(CA_DEPS)
cp "tests/fixtures/docker_registry/config/$(subst imatic__docker-tools__,,$(notdir $(basename $@)))/ssl/ca.pem" "${@}"
.PHONY: test
test:
docker-compose --file ./tests/fixtures/docker_registry/docker-compose.yml down
docker-compose --file ./tests/fixtures/docker_registry/docker-compose.yml up -d
docker build --file tests/Dockerfile --tag test .
docker run --volume /var/run/docker.sock:/var/run/docker.sock --add-host "registry.test:${HOST}" --add-host "registry-auth.test:${HOST}" test
install-ca: $(CA)
$(UPDATE_CA_COMMAND)
@echo "Certificate authorities installed. Docker will see them after it's daemon is restarted."
touch "${@}"
.PHONY: uninstall-ca
uninstall-ca:
rm -f ${CA}
$(UPDATE_CA_COMMAND)
.PHONY: update-hosts
update-hosts:
sed --in-place ':a;N;$$!ba;s/\n[^\n]* \(registry.test\|registry-auth.test\)\(\n\|\)//g' /etc/hosts
printf "\n${HOST} registry.test\n\n${HOST} registry-auth.test\n" >> /etc/hosts
.PHONY: generate-ssl
generate-ssl:
rm -f *
openssl genrsa -aes256 -passout pass:openssl -out ca-key.pem 4096
openssl req -new -x509 -days ${SSL_DAYS} -key ca-key.pem -sha256 -out ca.pem -passin pass:openssl -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=${CN}"
openssl genrsa -out "${CN}.key" 4096
openssl req -subj "/CN=${CN}" -sha256 -new -key "${CN}.key" -out server.csr
printf "subjectAltName = DNS:${CN}\nextendedKeyUsage = serverAuth" > extfile
openssl x509 -req -days ${SSL_DAYS} -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out "${CN}".pem -passin pass:openssl -extfile ./extfile
rm ca-key.pem ca.srl server.csr extfile
.PHONY: regenerate-ssl
regenerate-ssl:
$(MAKE) --directory tests/fixtures/docker_registry/config/registry/ssl/ --file ../../../../../../Makefile CN='registry.test' generate-ssl
$(MAKE) --directory tests/fixtures/docker_registry/config/auth/ssl/ --file ../../../../../../Makefile CN='registry-auth.test' generate-ssl
###################
# BUILD #
###################
RELEASE := 1
.PHONY: clean
clean:
rm -rf build/
build: clean
ifndef VERSION
$(error VERSION is empty)
endif
mkdir -p build/
tar --transform 's,^,/docker-tools-${VERSION}/,' -cvzf "build/docker-tools-${VERSION}.tar.gz" 'bin/'
# debian packaging files
build/docker-tools/deb: build
mkdir -p "build/deb"
cp "build/docker-tools-${VERSION}.tar.gz" "build/deb/docker-tools_${VERSION}.orig.tar.gz"
tar -xvf "build/deb/docker-tools_${VERSION}.orig.tar.gz" -C "build/deb"
mkdir -p "build/deb/docker-tools-${VERSION}/debian"
printf "\
Source: docker-tools\n\
Section: misc\n\
Maintainer: Miloslav Nenadál <miloslav.nenadal@imatic.cz>\n\
Build-Depends: debhelper (>=10)\n\
Standards-Version: 3.9.8\n\
Priority: optional\n\
\n\
Package: docker-tools\n\
Architecture: all\n\
Depends: curl, docker-ce, git, jq, \$${misc:Depends}\n\
Description: builds docker images from git repo\n\
Cotains various scripts for working with docker:\n\
- building docker images from git repo.\n" > "build/deb/docker-tools-${VERSION}/debian/control"
printf "10\n" > "build/deb/docker-tools-${VERSION}/debian/compat"
printf "bin/build-image bin\n\
bin/docker-registry-request bin\n\
bin/clear-docker-data bin\n" > "build/deb/docker-tools-${VERSION}/debian/install"
printf "3.0 (quilt)\n" > "build/deb/docker-tools-${VERSION}/debian/format"
printf "docker-tools (${VERSION}-${RELEASE}) unstable; urgency=low\n\
\n\
* Release\n\
\n\
-- User <user@example.com> $$(date -R)\n" > "build/deb/docker-tools-${VERSION}/debian/changelog"
printf "License: MIT\n" > "build/deb/docker-tools-${VERSION}/debian/copyright"
sed 's/^/ /g' ./LICENSE >> "build/deb/docker-tools-${VERSION}/debian/copyright"
printf "#!/usr/bin/make -f\n\n\
%%:\n\
\tdh \$$@\n" > "build/deb/docker-tools-${VERSION}/debian/rules"
docker run --rm --volume $$(pwd):/tmp/src msoap/ruby-ronn /bin/sh -c 'ronn --roff /tmp/src/doc/*.md'
mv ./doc/*.1 "build/deb/docker-tools-${VERSION}/debian/"
printf "debian/build-image.1\n\
debian/clear-docker-data.1\n\
debian/docker-registry-request.1\n" > "build/deb/docker-tools-${VERSION}/debian/docker-tools.manpages"
.PHONY: debian-package
debian-package: build/docker-tools/deb
docker run --volume "$$(pwd)":/tmp/src debian:stretch /bin/bash -c "\
apt-get update && \
apt-get install -y devscripts build-essential lintian ruby-ronn && \
cd /tmp/src/build/deb/docker-tools-${VERSION} && \
debuild -us -uc"
.PHONY: release
release:
./util/release
.PHONY: debian-package-env
# env for testing
debian-package-env:
docker run --interactive --tty --volume "$$(pwd)":/tmp/src --volume /var/run/docker.sock:/var/run/docker.sock debian:stretch /bin/bash
.PHONY: debian-package-env-setup
debian-package-env-setup:
apt-get update
apt-get install --yes \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
curl -fsSL https://download.docker.com/linux/$$(. /etc/os-release; echo "$$ID")/gpg | apt-key add -
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/$$(. /etc/os-release; echo "$$ID") \
$$(lsb_release -cs) \
stable"
apt-get update
apt-get install docker-ce