forked from jenkinsci/docker
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
156 lines (110 loc) · 4.54 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
ROOT_DIR="$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))/"
export DOCKER_BUILDKIT=1
export BUILDKIT_PROGRESS=plain
all: shellcheck build test
DOCKERFILES=$(shell find . -not -path '**/windows/*' -not -path './tests/*' -type f -name Dockerfile)
shellcheck:
$(ROOT_DIR)/tools/shellcheck -e SC1091 \
jenkins-support \
*.sh
build:
@for d in ${DOCKERFILES} ; do \
docker build --file "$${d}" . ; \
done
build-debian:
docker build --file 8/debian/buster/hotspot/Dockerfile .
build-alpine:
docker build --file 8/alpine/hotspot/Dockerfile .
build-slim:
docker build --file 8/debian/buster-slim/hotspot/Dockerfile .
build-jdk11:
docker build --file 11/debian/buster/hotspot/Dockerfile .
build-centos:
docker build --file 8/centos/centos8/hotspot/Dockerfile .
build-centos7:
docker build --file 8/centos/centos7/hotspot/Dockerfile .
bats:
# Latest tag is unfortunately 0.4.0 which is quite older than the latest master tip.
# So we clone and reset to this well known current sha:
git clone https://github.com/sstephenson/bats.git ; \
cd bats; \
git reset --hard 03608115df2071fff4eaaff1605768c275e5f81f
prepare-test: bats
git submodule update --init --recursive
mkdir -p target
test-run-%: prepare-test
DIRECTORY="${DIRECTORY}" bats/bin/bats tests | tee target/results-$*.tap
docker run --rm -v "${PWD}":/usr/src/app \
-w /usr/src/app node:12-alpine \
sh -c "npm install tap-xunit -g && cat target/results-$*.tap | tap-xunit --package='jenkinsci.docker.$*' > target/junit-results-$*.xml"
test-debian: DIRECTORY="8/debian/buster/hotspot"
test-debian: test-run-debian
test-alpine: DIRECTORY=8/alpine/hotspot
test-alpine: test-run-alpine
test-slim: DIRECTORY=8/debian/buster-slim/hotspot
test-slim: test-run-slim
test-jdk11: DIRECTORY=11/debian/buster/hotspot
test-jdk11: test-run-jdk11
test-centos: DIRECTORY=8/centos/centos8/hotspot
test-centos: test-run-centos
test-centos7: DIRECTORY=8/centos/centos7/hotspot
test-centos7: test-run-centos7
test: build prepare-test
@for d in ${DOCKERFILES} ; do \
dir=`dirname $$d | sed -e "s_^\./__"` ; \
DIRECTORY=$${dir} bats/bin/bats tests ; \
done
test-install-plugins: prepare-test
DIRECTORY="8/alpine/hotspot" bats/bin/bats tests/install-plugins.bats tests/install-plugins-plugins-cli.bats
publish:
./.ci/publish.sh ; \
./.ci/publish.sh --variant alpine ; \
./.ci/publish.sh --variant slim ; \
./.ci/publish.sh --variant jdk11 --start-after 2.151 ; \
./.ci/publish.sh --variant centos --start-after 2.181 ; \
./.ci/publish.sh --variant centos7 --start-after 2.199 ;
publish-images-variant:
./.ci/publish-images.sh --variant ${VARIANT} --arch ${ARCH} ;
publish-images-debian:
./.ci/publish-images.sh --variant debian --arch ${ARCH} ;
publish-images-alpine:
./.ci/publish-images.sh --variant alpine --arch ${ARCH} ;
publish-images-slim:
./.ci/publish-images.sh --variant slim --arch ${ARCH} ;
publish-images: publish-images-debian publish-images-alpine publish-images-slim
publish-tags-debian:
./.ci/publish-tags.sh --tag debian ;
publish-tag-alpine:
./.ci/publish-tags.sh --tag alpine ;
publish-tags-slim:
./.ci/publish-tags.sh --tag slim ;
publish-tags-lts-debian:
./.ci/publish-tags.sh --tag lts-debian ;
publish-tag-lts-alpine:
./.ci/publish-tags.sh --tag lts-alpine ;
publish-tags-lts-slim:
./.ci/publish-tags.sh --tag lts-slim ;
publish-tags: publish-tags-debian publish-tag-alpine publish-tags-slim publish-tags-lts-debian publish-tag-lts-alpine publish-tags-lts-slim
publish-manifests-debian:
./.ci/publish-manifests.sh --variant debian ;
publish-manifests-alpine:
./.ci/publish-manifests.sh --variant alpine ;
publish-manifests-slim:
./.ci/publish-manifests.sh --variant slim ;
publish-manifests-lts-debian:
./.ci/publish-manifests.sh --variant lts-debian ;
publish-manifests-lts-alpine:
./.ci/publish-manifests.sh --variant lts-alpine ;
publish-manifests-lts-slim:
./.ci/publish-manifests.sh --variant lts-slim ;
publish-manifests-versions-debian:
./.ci/publish-manifests.sh --variant versions-debian ;
publish-manifests-versions-alpine:
./.ci/publish-manifests.sh --variant versions-alpine ;
publish-manifests-versions-slim:
./.ci/publish-manifests.sh --variant versions-slim ;
publish-manifests: publish-manifests-debian publish-manifests-alpine publish-manifests-slim publish-manifests-lts-debian publish-manifests-lts-alpine publish-manifests-lts-slim publish-manifests-versions-debian publish-manifests-versions-alpine publish-manifests-versions-slim
clean:
rm -rf tests/test_helper/bats-*; \
rm -rf bats
.PHONY: shellcheck