@cryptotaxi247 / netdata-1 / commits / 876e9e652

packaging/docker/{build,publish}.sh: Simplify scripts. Support only single ARCH (#8747)

* packaging/docker/{build,publish}.sh: Simplify scripts. Support only single ARCH * packaging/docker/build.sh: Remove eval

Konstantinos Natsakis committed Apr 23, 2020 at 00:29 UTC 876e9e65297f995943991dda78004f6f006d2e86
3 files changed +44 -41
.travis.yml
+8 -8
@@ -375,25 +375,25 @@ jobs:
375 <<: *RELEASE_TEMPLATE
376 env:
377 - ALLOW_SOFT_FAILURE_HERE=true
378 - - ARCHS=i386
378 + - ARCH=i386
379
380 - name: Build & Publish docker image for amd64
381 <<: *RELEASE_TEMPLATE
382 env:
383 - ALLOW_SOFT_FAILURE_HERE=true
384 - - ARCHS=amd64
384 + - ARCH=amd64
385
386 - name: Build & Publish docker image for armhf
387 <<: *RELEASE_TEMPLATE
388 env:
389 - ALLOW_SOFT_FAILURE_HERE=true
390 - - ARCHS=armhf
390 + - ARCH=armhf
391
392 - name: Build & Publish docker image for aarch64
393 <<: *RELEASE_TEMPLATE
394 env:
395 - ALLOW_SOFT_FAILURE_HERE=true
396 - - ARCHS=aarch64
396 + - ARCH=aarch64
397
398 - name: Create release draft
399 git:
@@ -456,25 +456,25 @@ jobs:
456 <<: *NIGHTLY_TEMPLATE
457 env:
458 - ALLOW_SOFT_FAILURE_HERE=true
459 - - ARCHS=i386
459 + - ARCH=i386
460
461 - name: Build & Publish docker image for amd64
462 <<: *NIGHTLY_TEMPLATE
463 env:
464 - ALLOW_SOFT_FAILURE_HERE=true
465 - - ARCHS=amd64
465 + - ARCH=amd64
466
467 - name: Build & Publish docker image for armhf
468 <<: *NIGHTLY_TEMPLATE
469 env:
470 - ALLOW_SOFT_FAILURE_HERE=true
471 - - ARCHS=armhf
471 + - ARCH=armhf
472
473 - name: Build & Publish docker image for aarch64
474 <<: *NIGHTLY_TEMPLATE
475 env:
476 - ALLOW_SOFT_FAILURE_HERE=true
477 - - ARCHS=aarch64
477 + - ARCH=aarch64
478
479 - name: Create nightly release artifacts, publish to GCS
480 script:
packaging/docker/build.sh
+16 -16
@@ -14,9 +14,11 @@ if [ "${BASH_VERSINFO[0]}" -lt "4" ]; then
14 fi
15
16 VERSION="$1"
17 -declare -A ARCH_MAP
18 -ARCH_MAP=(["i386"]="386" ["amd64"]="amd64" ["armhf"]="arm" ["aarch64"]="arm64")
19 -[ "${ARCHS}" ] || ARCHS="${!ARCH_MAP[@]}" # Use default ARCHS unless ARCHS are externally provided
17 +
18 +if [ -z "${ARCH}" ]; then
19 + echo "ARCH not set, build cannot proceed"
20 + exit 1
21 +fi
22
23 if [ "${RELEASE_CHANNEL}" != "nightly" ] && [ "${RELEASE_CHANNEL}" != "stable" ]; then
24 echo "RELEASE_CHANNEL must be set to either 'nightly' or 'stable' - build cannot proceed"
@@ -51,22 +53,20 @@ if [ ! -z $CWD ] || [ ! "${TOP_LEVEL}" == "netdata" ]; then
53 fi
54
55 echo "Docker image build in progress.."
54 -echo "Version : ${VERSION}"
55 -echo "Repository : ${REPOSITORY}"
56 -echo "Architectures : ${ARCHS[*]}"
56 +echo "Version : ${VERSION}"
57 +echo "Repository : ${REPOSITORY}"
58 +echo "Architecture: ${ARCH}"
59
60 docker run --rm --privileged multiarch/qemu-user-static:register --reset
61
62 # Build images using multi-arch Dockerfile.
61 -for ARCH in ${ARCHS[@]}; do
62 - TAG="${REPOSITORY,,}:${VERSION}-${ARCH}"
63 - echo "Building tag ${TAG}.."
64 - eval docker build --no-cache \
65 - --build-arg ARCH="${ARCH}" \
66 - --build-arg RELEASE_CHANNEL="${RELEASE_CHANNEL}" \
67 - --tag "${TAG}" \
68 - --file packaging/docker/Dockerfile ./
69 - echo "..Done!"
70 -done
63 +TAG="${REPOSITORY,,}:${VERSION}-${ARCH}"
64 +echo "Building tag ${TAG}.."
65 +docker build --no-cache \
66 + --build-arg ARCH="${ARCH}" \
67 + --build-arg RELEASE_CHANNEL="${RELEASE_CHANNEL}" \
68 + --tag "${TAG}" \
69 + --file packaging/docker/Dockerfile .
70 +echo "..Done!"
71
72 echo "Docker build process completed!"
packaging/docker/publish.sh
+20 -17
@@ -16,9 +16,12 @@ fi
16
17 WORKDIR="$(mktemp -d)" # Temporary folder, removed after script is done
18 VERSION="$1"
19 -declare -A ARCH_MAP
20 -ARCH_MAP=(["i386"]="386" ["amd64"]="amd64" ["armhf"]="arm" ["aarch64"]="arm64")
21 -[ "${ARCHS}" ] || ARCHS="${!ARCH_MAP[@]}" # Use default ARCHS unless ARCHS are externally provided
19 +
20 +if [ -z "${ARCH}" ]; then
21 + echo "ARCH not set, build cannot proceed"
22 + exit 1
23 +fi
24 +
25 DOCKER_CMD="docker --config ${WORKDIR}"
26 GIT_MAIL=${GIT_MAIL:-"bot@netdata.cloud"}
27 GIT_USER=${GIT_USER:-"netdatabot"}
@@ -58,10 +61,10 @@ if [ ! -z $CWD ] || [ ! "${TOP_LEVEL}" == "netdata" ]; then
61 fi
62
63 echo "Docker image publishing in progress.."
61 -echo "Version : ${VERSION}"
62 -echo "Repository : ${REPOSITORY}"
63 -echo "Architectures : ${ARCHS[*]}"
64 -echo "Manifest list : ${MANIFEST_LIST}"
64 +echo "Version : ${VERSION}"
65 +echo "Repository : ${REPOSITORY}"
66 +echo "Architecture : ${ARCH}"
67 +echo "Manifest list: ${MANIFEST_LIST}"
68
69 # Create temporary docker CLI config with experimental features enabled (manifests v2 need it)
70 echo '{"experimental":"enabled"}' > "${WORKDIR}"/config.json
@@ -70,18 +73,16 @@ echo '{"experimental":"enabled"}' > "${WORKDIR}"/config.json
73 echo "$DOCKER_PWD" | $DOCKER_CMD login -u "$DOCKER_USERNAME" --password-stdin
74
75 # Push images to registry
73 -for ARCH in ${ARCHS[@]}; do
74 - TAG="${MANIFEST_LIST}-${ARCH}"
75 - echo "Publishing image ${TAG}.."
76 - $DOCKER_CMD push "${TAG}"
76 +TAG="${MANIFEST_LIST}-${ARCH}"
77 +echo "Publishing image ${TAG}.."
78 +$DOCKER_CMD push "${TAG}"
79
78 - published() {
79 - curl -s "https://registry.hub.docker.com/v2/repositories/${REPOSITORY}/tags" | jq -e -r '.results[] | select(.name == "'"${VERSION}-${ARCH}"'")' > /dev/null
80 - }
81 - retry 5 published
80 +published() {
81 + curl -s "https://registry.hub.docker.com/v2/repositories/${REPOSITORY}/tags" | jq -e -r '.results[] | select(.name == "'"${VERSION}-${ARCH}"'")' > /dev/null
82 +}
83 +retry 5 published
84
83 - echo "Image ${TAG} published succesfully!"
84 -done
85 +echo "Image ${TAG} published succesfully!"
86
87 # Recreate docker manifest list
88 echo "Getting tag list for version '${VERSION}'.."
@@ -91,6 +92,8 @@ echo "Creating manifest list.."
92 $DOCKER_CMD manifest create --amend "${MANIFEST_LIST}" "${TAGS[@]/#/${REPOSITORY}:}"
93
94 # Annotate manifest with CPU architecture information
95 +declare -A ARCH_MAP
96 +ARCH_MAP=(["i386"]="386" ["amd64"]="amd64" ["armhf"]="arm" ["aarch64"]="arm64")
97
98 echo "Executing manifest annotate.."
99 for TAG in "${TAGS[@]}"; do