Skip to content

Commit 1ffd9e7

Browse files
RaymondMouthaandceejay
authored andcommitted
Support i386 (#155)
* Added support for s390x * Added support for s390x - manifest list added * bump node-red 1.0.1 * add s390x to Readme [skip travis] * Update README.md [skip travis] * Feature development repo (#149) * updated as discussed in PR144 * updated as discussed in PR144 #1 * updated as discussed in PR149 #1 * updated as discussed in PR149 #2 * Add healthcheck to dev * Feature/i386 (#153) * added i386 support * fix manifest arch for 386 * Fixup dev branch custom package.json to 1.0.2 merge changes from master to README. * - missing i386 added * let healthcheck be more tolerant * - [skip travis] added Dockerhub Stars
1 parent 3da6997 commit 1ffd9e7

File tree

5 files changed

+196
-50
lines changed

5 files changed

+196
-50
lines changed

Diff for: .docker/Dockerfile.alpine

+3
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,7 @@ VOLUME ["/data"]
9090
# Expose the listening port of node-red
9191
EXPOSE 1880
9292

93+
# Add a healthcheck (default every 30 secs)
94+
HEALTHCHECK CMD curl http://localhost:1880/ || exit 1
95+
9396
ENTRYPOINT ["npm", "start", "--", "--userDir", "/data"]

Diff for: .docker/docker.sh

+103-23
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,17 @@ main() {
2626
"manifest-list-version")
2727
docker_manifest_list_version "$2" "$3"
2828
;;
29-
"manifest-list-test-beta-latest")
30-
docker_manifest_list_test_beta_latest "$2" "$3"
29+
"manifest_list_beta")
30+
docker_manifest_list_beta "$2" "$3"
31+
;;
32+
"manifest_list_dev")
33+
docker_manifest_list_dev "$2" "$3"
34+
;;
35+
"manifest_list_test")
36+
docker_manifest_list_test "$2" "$3"
37+
;;
38+
"manifest_list_latest")
39+
docker_manifest_list_latest "$2" "$3"
3140
;;
3241
*)
3342
echo "none of above!"
@@ -115,48 +124,118 @@ function docker_manifest_list_version() {
115124
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v6 \
116125
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v7 \
117126
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm64v8 \
118-
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x
127+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x \
128+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-i386
119129

120-
docker manifest annotate ${TARGET}:${BUILD_VERSION}${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v6 --os=linux --arch=arm --variant=v6
121-
docker manifest annotate ${TARGET}:${BUILD_VERSION}${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v7 --os=linux --arch=arm --variant=v7
130+
docker manifest annotate ${TARGET}:${BUILD_VERSION}${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v6 --os=linux --arch=arm --variant=v6
131+
docker manifest annotate ${TARGET}:${BUILD_VERSION}${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v7 --os=linux --arch=arm --variant=v7
122132
docker manifest annotate ${TARGET}:${BUILD_VERSION}${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm64v8 --os=linux --arch=arm64 --variant=v8
123133
docker manifest annotate ${TARGET}:${BUILD_VERSION}${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x --os=linux --arch=s390x
134+
docker manifest annotate ${TARGET}:${BUILD_VERSION}${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-i386 --os=linux --arch=386
124135

125136
docker manifest push ${TARGET}:${BUILD_VERSION}${NODE_VERSION}${TAG_SUFFIX}
126137

127138
docker run --rm mplatform/mquery ${TARGET}:${BUILD_VERSION}${NODE_VERSION}${TAG_SUFFIX}
128139
}
129140

130-
function docker_manifest_list_test_beta_latest() {
141+
function docker_manifest_list_beta() {
142+
if [[ ${1} == "" ]]; then export NODE_VERSION=""; else export NODE_VERSION="-${1}"; fi
143+
if [[ ${2} == "default" ]]; then export TAG_SUFFIX=""; else export TAG_SUFFIX="-${2}"; fi
131144

132-
if [[ ${BUILD_VERSION} == *"test"* ]]; then
133-
export TAG_PREFIX="test";
134-
elif [[ ${BUILD_VERSION} == *"beta"* ]]; then
135-
export TAG_PREFIX="beta";
136-
else
137-
export TAG_PREFIX="latest";
138-
fi
145+
echo "DOCKER MANIFEST: Create and Push docker manifest list - ${TARGET}:beta${NODE_VERSION}${TAG_SUFFIX}."
146+
147+
docker manifest create ${TARGET}:beta${NODE_VERSION}${TAG_SUFFIX} \
148+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-amd64 \
149+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v6 \
150+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v7 \
151+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm64v8 \
152+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x \
153+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-i386
154+
155+
docker manifest annotate ${TARGET}:beta${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v6 --os=linux --arch=arm --variant=v6
156+
docker manifest annotate ${TARGET}:beta${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v7 --os=linux --arch=arm --variant=v7
157+
docker manifest annotate ${TARGET}:beta${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm64v8 --os=linux --arch=arm64 --variant=v8
158+
docker manifest annotate ${TARGET}:beta${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x --os=linux --arch=s390x
159+
docker manifest annotate ${TARGET}:beta${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-i386 --os=linux --arch=386
160+
161+
docker manifest push ${TARGET}:beta${NODE_VERSION}${TAG_SUFFIX}
139162

163+
docker run --rm mplatform/mquery ${TARGET}:beta${NODE_VERSION}${TAG_SUFFIX}
164+
}
165+
166+
function docker_manifest_list_dev() {
140167
if [[ ${1} == "" ]]; then export NODE_VERSION=""; else export NODE_VERSION="-${1}"; fi
141168
if [[ ${2} == "default" ]]; then export TAG_SUFFIX=""; else export TAG_SUFFIX="-${2}"; fi
142169

143-
echo "DOCKER MANIFEST: Create and Push docker manifest list - ${TARGET}:${TAG_PREFIX}${NODE_VERSION}${TAG_SUFFIX}."
170+
echo "DOCKER MANIFEST: Create and Push docker manifest list - ${TARGET}:dev${NODE_VERSION}${TAG_SUFFIX}."
144171

145-
docker manifest create ${TARGET}:${TAG_PREFIX}${NODE_VERSION}${TAG_SUFFIX} \
172+
docker manifest create ${TARGET}:dev${NODE_VERSION}${TAG_SUFFIX} \
146173
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-amd64 \
147174
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v6 \
148175
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v7 \
149176
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm64v8 \
150-
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x
177+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x \
178+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-i386
151179

152-
docker manifest annotate ${TARGET}:${TAG_PREFIX}${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v6 --os=linux --arch=arm --variant=v6
153-
docker manifest annotate ${TARGET}:${TAG_PREFIX}${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v7 --os=linux --arch=arm --variant=v7
154-
docker manifest annotate ${TARGET}:${TAG_PREFIX}${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm64v8 --os=linux --arch=arm64 --variant=v8
155-
docker manifest annotate ${TARGET}:${TAG_PREFIX}${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x --os=linux --arch=s390x
180+
docker manifest annotate ${TARGET}:dev${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v6 --os=linux --arch=arm --variant=v6
181+
docker manifest annotate ${TARGET}:dev${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v7 --os=linux --arch=arm --variant=v7
182+
docker manifest annotate ${TARGET}:dev${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm64v8 --os=linux --arch=arm64 --variant=v8
183+
docker manifest annotate ${TARGET}:dev${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x --os=linux --arch=s390x
184+
docker manifest annotate ${TARGET}:dev${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-i386 --os=linux --arch=386
156185

157-
docker manifest push ${TARGET}:${TAG_PREFIX}${NODE_VERSION}${TAG_SUFFIX}
158-
159-
docker run --rm mplatform/mquery ${TARGET}:${TAG_PREFIX}${NODE_VERSION}${TAG_SUFFIX}
186+
docker manifest push ${TARGET}:dev${NODE_VERSION}${TAG_SUFFIX}
187+
188+
docker run --rm mplatform/mquery ${TARGET}:dev${NODE_VERSION}${TAG_SUFFIX}
189+
}
190+
191+
function docker_manifest_list_test() {
192+
if [[ ${1} == "" ]]; then export NODE_VERSION=""; else export NODE_VERSION="-${1}"; fi
193+
if [[ ${2} == "default" ]]; then export TAG_SUFFIX=""; else export TAG_SUFFIX="-${2}"; fi
194+
195+
echo "DOCKER MANIFEST: Create and Push docker manifest list - ${TARGET}:test${NODE_VERSION}${TAG_SUFFIX}."
196+
197+
docker manifest create ${TARGET}:test${NODE_VERSION}${TAG_SUFFIX} \
198+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-amd64 \
199+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v6 \
200+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v7 \
201+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm64v8 \
202+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x \
203+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-i386
204+
205+
docker manifest annotate ${TARGET}:test${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v6 --os=linux --arch=arm --variant=v6
206+
docker manifest annotate ${TARGET}:test${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v7 --os=linux --arch=arm --variant=v7
207+
docker manifest annotate ${TARGET}:test${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm64v8 --os=linux --arch=arm64 --variant=v8
208+
docker manifest annotate ${TARGET}:test${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x --os=linux --arch=s390x
209+
docker manifest annotate ${TARGET}:test${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-i386 --os=linux --arch=386
210+
211+
docker manifest push ${TARGET}:test${NODE_VERSION}${TAG_SUFFIX}
212+
213+
docker run --rm mplatform/mquery ${TARGET}:test${NODE_VERSION}${TAG_SUFFIX}
214+
}
215+
216+
function docker_manifest_list_latest() {
217+
if [[ ${1} == "" ]]; then export NODE_VERSION=""; else export NODE_VERSION="-${1}"; fi
218+
if [[ ${2} == "default" ]]; then export TAG_SUFFIX=""; else export TAG_SUFFIX="-${2}"; fi
219+
220+
echo "DOCKER MANIFEST: Create and Push docker manifest list - ${TARGET}:latest${NODE_VERSION}${TAG_SUFFIX}."
221+
222+
docker manifest create ${TARGET}:latest${NODE_VERSION}${TAG_SUFFIX} \
223+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-amd64 \
224+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v6 \
225+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v7 \
226+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm64v8 \
227+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x \
228+
${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-i386
229+
230+
docker manifest annotate ${TARGET}:latest${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v6 --os=linux --arch=arm --variant=v6
231+
docker manifest annotate ${TARGET}:latest${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm32v7 --os=linux --arch=arm --variant=v7
232+
docker manifest annotate ${TARGET}:latest${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-arm64v8 --os=linux --arch=arm64 --variant=v8
233+
docker manifest annotate ${TARGET}:latest${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-s390x --os=linux --arch=s390x
234+
docker manifest annotate ${TARGET}:latest${NODE_VERSION}${TAG_SUFFIX} ${TARGET}:${BUILD_VERSION}${NODE_VERSION:--10}${TAG_SUFFIX}-i386 --os=linux --arch=386
235+
236+
docker manifest push ${TARGET}:latest${NODE_VERSION}${TAG_SUFFIX}
237+
238+
docker run --rm mplatform/mquery ${TARGET}:latest${NODE_VERSION}${TAG_SUFFIX}
160239
}
161240

162241
function setup_dependencies() {
@@ -196,6 +275,7 @@ function prepare_qemu() {
196275
curl -L -o qemu-arm-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/$QEMU_VERSION/qemu-arm-static.tar.gz && tar xzf qemu-arm-static.tar.gz &&
197276
curl -L -o qemu-aarch64-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/$QEMU_VERSION/qemu-aarch64-static.tar.gz && tar xzf qemu-aarch64-static.tar.gz &&
198277
curl -L -o qemu-s390x-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/$QEMU_VERSION/qemu-s390x-static.tar.gz && tar xzf qemu-s390x-static.tar.gz &&
278+
curl -L -o qemu-i386-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/$QEMU_VERSION/qemu-i386-static.tar.gz && tar xzf qemu-i386-static.tar.gz &&
199279
popd
200280
}
201281

Diff for: .travis.yml

+66-16
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ language: bash
88

99
env:
1010
global:
11-
- TARGET=nodered/node-red
1211
- QEMU_VERSION=v4.0.0
1312
- OS=alpine
1413
- DOCKER_FILE=Dockerfile.alpine
@@ -21,13 +20,15 @@ env:
2120
- NODE_VERSION=10 TAG_SUFFIX=default QEMU_ARCH=arm ARCH=arm32v7
2221
- NODE_VERSION=10 TAG_SUFFIX=default QEMU_ARCH=aarch64 ARCH=arm64v8
2322
- NODE_VERSION=10 TAG_SUFFIX=default QEMU_ARCH=s390x ARCH=s390x
23+
- NODE_VERSION=10 TAG_SUFFIX=default QEMU_ARCH=i386 ARCH=i386
2424

2525
# Minimal Images
2626
- NODE_VERSION=10 TAG_SUFFIX=minimal QEMU_ARCH=x86_64 ARCH=amd64
2727
- NODE_VERSION=10 TAG_SUFFIX=minimal QEMU_ARCH=arm ARCH=arm32v6
2828
- NODE_VERSION=10 TAG_SUFFIX=minimal QEMU_ARCH=arm ARCH=arm32v7
2929
- NODE_VERSION=10 TAG_SUFFIX=minimal QEMU_ARCH=aarch64 ARCH=arm64v8
3030
- NODE_VERSION=10 TAG_SUFFIX=minimal QEMU_ARCH=s390x ARCH=s390x
31+
- NODE_VERSION=10 TAG_SUFFIX=minimal QEMU_ARCH=i386 ARCH=i386
3132

3233
### Node JS 12 #####################################################################################################
3334
# Default Images
@@ -36,38 +37,50 @@ env:
3637
- NODE_VERSION=12 TAG_SUFFIX=default QEMU_ARCH=arm ARCH=arm32v7
3738
- NODE_VERSION=12 TAG_SUFFIX=default QEMU_ARCH=aarch64 ARCH=arm64v8
3839
- NODE_VERSION=12 TAG_SUFFIX=default QEMU_ARCH=s390x ARCH=s390x
40+
- NODE_VERSION=12 TAG_SUFFIX=default QEMU_ARCH=i386 ARCH=i386
3941

4042
# Minimal Images
4143
- NODE_VERSION=12 TAG_SUFFIX=minimal QEMU_ARCH=x86_64 ARCH=amd64
4244
- NODE_VERSION=12 TAG_SUFFIX=minimal QEMU_ARCH=arm ARCH=arm32v6
4345
- NODE_VERSION=12 TAG_SUFFIX=minimal QEMU_ARCH=arm ARCH=arm32v7
4446
- NODE_VERSION=12 TAG_SUFFIX=minimal QEMU_ARCH=aarch64 ARCH=arm64v8
4547
- NODE_VERSION=12 TAG_SUFFIX=minimal QEMU_ARCH=s390x ARCH=s390x
48+
- NODE_VERSION=12 TAG_SUFFIX=minimal QEMU_ARCH=i386 ARCH=i386
4649

4750
before_install:
4851
- ./.docker/docker.sh prepare
4952

5053
install: true
5154

5255
before_script:
53-
# Set BUILD_VERSION
56+
# Set TARGET Docker Repo
57+
# default TARGET = nodered/node-red-dev
58+
# if TRAVIS_TAG starts with a `v` and only contains numbers, dots and/or dash then TARGET = nodered/node-red
5459
- >
55-
if [ ! -z "${TRAVIS_TAG}" ]; then
56-
export BUILD_VERSION=${TRAVIS_TAG:1};
60+
export TARGET=nodered/node-red-dev
61+
62+
if [[ "${TRAVIS_TAG}" =~ ^v[0-9\.-]*$ ]]; then
63+
export TARGET=nodered/node-red
5764
fi
5865
5966
# Set NODE_RED_VERSION from package.json
6067
- >
6168
export NODE_RED_VERSION=$(grep -oE "\"node-red\": \"(\w*.\w*.\w*.\w*.\w*.)" package.json | cut -d\" -f4)
6269
70+
# Set BUILD_VERSION
71+
- >
72+
if [ ! -z "${TRAVIS_TAG}" ]; then
73+
export BUILD_VERSION=${TRAVIS_TAG:1};
74+
fi
75+
6376
script:
6477
# Build Docker image
6578
- ./.docker/docker.sh build
6679

6780
# Test Docker image
6881
- ./.docker/docker.sh test
6982

70-
# Push Docker image, ony if TRAVIS_TAG is set
83+
# Push Docker image, only if TRAVIS_TAG is set
7184
- >
7285
if [ ! -z "${TRAVIS_TAG}" ]; then
7386
# Tag Docker image
@@ -86,7 +99,7 @@ script:
8699
jobs:
87100
include:
88101
- stage: manifest
89-
# Only create and push manifest list to Docker Hub, when tag starts with a `v`, eg. v0.20.8
102+
# Only create and push manifest list to Docker Hub, when tag starts with a `v`, eg. v1.0.2
90103
if: tag =~ ^v
91104
script:
92105
# Create and push Docker manifest lists
@@ -105,19 +118,56 @@ jobs:
105118
- ./.docker/docker.sh manifest-list-version "10" "default"
106119
- ./.docker/docker.sh manifest-list-version "" "default"
107120

108-
# Create and push manifest list 'latest' or 'testing' for minimal
109-
- ./.docker/docker.sh manifest-list-test-beta-latest "12" "minimal"
110-
- ./.docker/docker.sh manifest-list-test-beta-latest "10" "minimal"
111-
- ./.docker/docker.sh manifest-list-test-beta-latest "" "minimal"
112-
113-
# Create and push manifest list 'latest' or 'testing' for default
114-
- ./.docker/docker.sh manifest-list-test-beta-latest "12" "default"
115-
- ./.docker/docker.sh manifest-list-test-beta-latest "10" "default"
116-
- ./.docker/docker.sh manifest-list-test-beta-latest "" "default"
121+
# if TARGET = `nodered/node-red` then manifest lists get tagged as `latest` and push to `nodered/node-red`
122+
# if tags contain `beta` then manifest lists get tagged as `beta` and push to `nodered/node-red-dev`
123+
# if tags contain `dev` then manifest lists get tagged as `dev` and push to `nodered/node-red-dev`
124+
# else manifest lists get tagged as `test` and push to `nodered/node-red-dev`
125+
- >
126+
if [[ "${TARGET}" == "nodered/node-red" ]]; then
127+
# Create and push manifest list `latest` for minimal
128+
./.docker/docker.sh manifest_list_latest "12" "minimal"
129+
./.docker/docker.sh manifest_list_latest "10" "minimal"
130+
./.docker/docker.sh manifest_list_latest "" "minimal"
131+
132+
# Create and push manifest list `latest` for default
133+
./.docker/docker.sh manifest_list_latest "12" "default"
134+
./.docker/docker.sh manifest_list_latest "10" "default"
135+
./.docker/docker.sh manifest_list_latest "" "default"
136+
elif [[ "${TRAVIS_TAG}" == *"beta"* ]]; then
137+
# Create and push manifest list `beta` for minimal
138+
./.docker/docker.sh manifest_list_beta "12" "minimal"
139+
./.docker/docker.sh manifest_list_beta "10" "minimal"
140+
./.docker/docker.sh manifest_list_beta "" "minimal"
141+
142+
# Create and push manifest list `beta` for default
143+
./.docker/docker.sh manifest_list_beta "12" "default"
144+
./.docker/docker.sh manifest_list_beta "10" "default"
145+
./.docker/docker.sh manifest_list_beta "" "default"
146+
elif [[ "${TRAVIS_TAG}" == *"dev"* ]]; then
147+
# Create and push manifest list `dev` for minimal
148+
./.docker/docker.sh manifest_list_dev "12" "minimal"
149+
./.docker/docker.sh manifest_list_dev "10" "minimal"
150+
./.docker/docker.sh manifest_list_dev "" "minimal"
151+
152+
# Create and push manifest list `dev` for default
153+
./.docker/docker.sh manifest_list_dev "12" "default"
154+
./.docker/docker.sh manifest_list_dev "10" "default"
155+
./.docker/docker.sh manifest_list_dev "" "default"
156+
else
157+
# Create and push manifest list `test` for minimal
158+
./.docker/docker.sh manifest_list_test "12" "minimal"
159+
./.docker/docker.sh manifest_list_test "10" "minimal"
160+
./.docker/docker.sh manifest_list_test "" "minimal"
161+
162+
# Create and push manifest list `test` for default
163+
./.docker/docker.sh manifest_list_test "12" "default"
164+
./.docker/docker.sh manifest_list_test "10" "default"
165+
./.docker/docker.sh manifest_list_test "" "default"
166+
fi
117167
118168
# Docker Logout
119169
- docker logout
120170

121-
# notify me when things fail
171+
# Notify me when things fail
122172
notifications:
123173
email: true

0 commit comments

Comments
 (0)