From 848f60eae13f91e7cde4d3963a9e5735c4a59bc3 Mon Sep 17 00:00:00 2001 From: Torsten Curdt Date: Tue, 14 Dec 2021 20:13:00 +0100 Subject: [PATCH 1/9] also build for arm64 --- contrib/build-dokku.Dockerfile | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/contrib/build-dokku.Dockerfile b/contrib/build-dokku.Dockerfile index afadbb4bc..3d279dfc2 100644 --- a/contrib/build-dokku.Dockerfile +++ b/contrib/build-dokku.Dockerfile @@ -24,6 +24,7 @@ COPY . ${WORKDIR} ENV GOPATH=/go + FROM builder as amd64 ARG PLUGIN_MAKE_TARGET @@ -39,6 +40,7 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \ make version copyfiles \ && make deb-dokku rpm-dokku + FROM builder as armhf COPY --from=amd64 /tmp /tmp @@ -59,4 +61,26 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \ GOARCH=arm make version copyfiles \ && DOKKU_ARCHITECTURE=armhf GOARCH=arm make deb-dokku + +FROM builder as arm64 + +COPY --from=amd64 /tmp /tmp +COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated + +RUN rm -rf /tmp/build-dokku + +ARG PLUGIN_MAKE_TARGET +ARG DOKKU_VERSION=master +ARG DOKKU_GIT_REV +ARG IS_RELEASE=false + +RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \ + DOKKU_VERSION=${DOKKU_VERSION} \ + DOKKU_GIT_REV=${DOKKU_GIT_REV} \ + IS_RELEASE=${IS_RELEASE} \ + SKIP_GO_CLEAN=true \ + GOARCH=arm64 make version copyfiles \ + && DOKKU_ARCHITECTURE=arm64 GOARCH=arm64 make deb-dokku + + RUN ls -lha /tmp/ From 9f981328d29e80988bd3dacac6236defec60596d Mon Sep 17 00:00:00 2001 From: Torsten Curdt Date: Tue, 14 Dec 2021 20:20:35 +0100 Subject: [PATCH 2/9] also release arm64 package --- contrib/release-dokku | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/contrib/release-dokku b/contrib/release-dokku index faa929f24..65e0b7add 100755 --- a/contrib/release-dokku +++ b/contrib/release-dokku @@ -392,12 +392,14 @@ main() { fn-repo-update "$IS_RELEASE" "$CURRENT_VERSION" "$NEXT_VERSION" fn-build-dokku "$IS_RELEASE" "$NEXT_VERSION" || log-fail "Error building package" fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_armhf.deb" || log-fail "Error extracting deb package" + fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_arm64.deb" || log-fail "Error extracting deb package" fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error extracting deb package" fn-extract-package "$IS_RELEASE" "dokku-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error extracting rpm package" cp -f "build/dokku_${NEXT_VERSION}_amd64.deb" build/dokku.deb if [[ "$RELEASE" != "build" ]]; then fn-publish-package "$IS_RELEASE" "raspbian" "build/dokku_${NEXT_VERSION}_armhf.deb" || log-fail "Error publishing deb package" + fn-publish-package "$IS_RELEASE" "deb" "build/dokku_${NEXT_VERSION}_arm64.deb" || log-fail "Error publishing deb package" fn-publish-package "$IS_RELEASE" "deb" "build/dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error publishing deb package" fn-publish-package "$IS_RELEASE" "rpm" "build/dokku-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error publishing rpm package" fn-build-docker-image "$NEXT_VERSION" || log-fail "Error building docker image" @@ -415,6 +417,8 @@ main() { git checkout -- plugins/*/plugin.toml fi + # what about this? + # echo "build/dokku_${NEXT_VERSION}_arm64.deb" >build/deb-filename echo "build/dokku_${NEXT_VERSION}_amd64.deb" >build/deb-filename echo "build/dokku-${NEXT_VERSION}-1.x86_64.rpm" >build/rpm-filename } From 4a86650a4969f568499186b5aabe6dd5ac3155b4 Mon Sep 17 00:00:00 2001 From: Torsten Curdt Date: Tue, 14 Dec 2021 21:25:31 +0100 Subject: [PATCH 3/9] removed empty lines --- contrib/build-dokku.Dockerfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/contrib/build-dokku.Dockerfile b/contrib/build-dokku.Dockerfile index 3d279dfc2..7fac18462 100644 --- a/contrib/build-dokku.Dockerfile +++ b/contrib/build-dokku.Dockerfile @@ -24,7 +24,6 @@ COPY . ${WORKDIR} ENV GOPATH=/go - FROM builder as amd64 ARG PLUGIN_MAKE_TARGET @@ -40,7 +39,6 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \ make version copyfiles \ && make deb-dokku rpm-dokku - FROM builder as armhf COPY --from=amd64 /tmp /tmp @@ -61,7 +59,6 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \ GOARCH=arm make version copyfiles \ && DOKKU_ARCHITECTURE=armhf GOARCH=arm make deb-dokku - FROM builder as arm64 COPY --from=amd64 /tmp /tmp @@ -82,5 +79,4 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \ GOARCH=arm64 make version copyfiles \ && DOKKU_ARCHITECTURE=arm64 GOARCH=arm64 make deb-dokku - RUN ls -lha /tmp/ From a89cc87a431e732db19a42a1d31579a7911be810 Mon Sep 17 00:00:00 2001 From: Torsten Curdt Date: Tue, 14 Dec 2021 21:31:28 +0100 Subject: [PATCH 4/9] removed commented out lines --- contrib/release-dokku | 2 -- 1 file changed, 2 deletions(-) diff --git a/contrib/release-dokku b/contrib/release-dokku index 65e0b7add..655115240 100755 --- a/contrib/release-dokku +++ b/contrib/release-dokku @@ -417,8 +417,6 @@ main() { git checkout -- plugins/*/plugin.toml fi - # what about this? - # echo "build/dokku_${NEXT_VERSION}_arm64.deb" >build/deb-filename echo "build/dokku_${NEXT_VERSION}_amd64.deb" >build/deb-filename echo "build/dokku-${NEXT_VERSION}-1.x86_64.rpm" >build/rpm-filename } From 46c9d0e33fc048d039f5f7421b7f42d78e55c117 Mon Sep 17 00:00:00 2001 From: Torsten Curdt Date: Tue, 14 Dec 2021 21:32:32 +0100 Subject: [PATCH 5/9] copy the right binaries --- contrib/build-dokku.Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/build-dokku.Dockerfile b/contrib/build-dokku.Dockerfile index 7fac18462..9f236f910 100644 --- a/contrib/build-dokku.Dockerfile +++ b/contrib/build-dokku.Dockerfile @@ -41,7 +41,7 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \ FROM builder as armhf -COPY --from=amd64 /tmp /tmp +COPY --from=armhf /tmp /tmp COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated RUN rm -rf /tmp/build-dokku @@ -61,7 +61,7 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \ FROM builder as arm64 -COPY --from=amd64 /tmp /tmp +COPY --from=arm64 /tmp /tmp COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated RUN rm -rf /tmp/build-dokku From e2403c8d9407a35f79ac98a1cde5b3f51335f7d3 Mon Sep 17 00:00:00 2001 From: Torsten Curdt Date: Tue, 14 Dec 2021 22:07:32 +0100 Subject: [PATCH 6/9] chain the builders to build up all the builds in one dir --- contrib/build-dokku.Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/build-dokku.Dockerfile b/contrib/build-dokku.Dockerfile index 9f236f910..3ca85034a 100644 --- a/contrib/build-dokku.Dockerfile +++ b/contrib/build-dokku.Dockerfile @@ -41,7 +41,7 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \ FROM builder as armhf -COPY --from=armhf /tmp /tmp +COPY --from=amd64 /tmp /tmp COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated RUN rm -rf /tmp/build-dokku @@ -61,7 +61,7 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \ FROM builder as arm64 -COPY --from=arm64 /tmp /tmp +COPY --from=armhf /tmp /tmp COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated RUN rm -rf /tmp/build-dokku From 4fede344fcb14acf33e0a68b4d99414df892d8bb Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Fri, 28 Jan 2022 17:55:46 -0500 Subject: [PATCH 7/9] refactor: build docker image for all architectures --- .dockerignore | 2 +- Dockerfile | 4 ++-- contrib/release-dokku | 12 +++++++----- tests/ci/setup.sh | 11 +++++------ 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/.dockerignore b/.dockerignore index a06e41fd6..fb38043ca 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,7 +6,7 @@ contrib build docs tests -!build/dokku.deb +!build/package/* !tests/dhparam.pem !contrib/bash-completion !contrib/docker diff --git a/Dockerfile b/Dockerfile index d14634058..f317becd9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ RUN addgroup --gid $DOKKU_GID dokku \ && adduser --uid $DOKKU_UID --gid $DOKKU_GID --disabled-password --gecos "" "dokku" COPY ./tests/dhparam.pem /tmp/dhparam.pem -COPY ./build/dokku.deb /tmp/dokku.deb +COPY ./build/package/ /tmp SHELL ["/bin/bash", "-o", "pipefail", "-c"] # hadolint ignore=DL3005,DL3008 @@ -28,7 +28,7 @@ RUN echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | debconf-set-selections && apt-get update -qq \ && apt-get upgrade -qq -y \ && apt-get -qq -y --no-install-recommends --only-upgrade install openssl openssh-server \ - && apt-get -qq -y --no-install-recommends install rsync /tmp/dokku.deb \ + && apt-get -qq -y --no-install-recommends install rsync "/tmp/dokku-$(dpkg --print-architecture).deb" \ && apt-get purge -qq -y syslog-ng-core \ && apt-get autoremove -qq -y \ && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/contrib/release-dokku b/contrib/release-dokku index 655115240..436af96e3 100755 --- a/contrib/release-dokku +++ b/contrib/release-dokku @@ -43,7 +43,8 @@ fn-build-dokku() { pushd "$ROOT_DIR" >/dev/null GOLANG_VERSION="$(grep BUILD_IMAGE common.mk | cut -d' ' -f3 | cut -d':' -f2)" - docker build \ + docker buildx build \ + --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ --build-arg DOKKU_VERSION="$DOKKU_VERSION" \ --build-arg DOKKU_GIT_REV="$DOKKU_GIT_REV" \ --build-arg IS_RELEASE="$IS_RELEASE" \ @@ -395,7 +396,11 @@ main() { fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_arm64.deb" || log-fail "Error extracting deb package" fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error extracting deb package" fn-extract-package "$IS_RELEASE" "dokku-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error extracting rpm package" - cp -f "build/dokku_${NEXT_VERSION}_amd64.deb" build/dokku.deb + mkdir -p build/package + cp -f "build/dokku_${NEXT_VERSION}_amd64.deb" build/package/dokku-amd64.deb + cp -f "build/dokku_${NEXT_VERSION}_arm64.deb" build/package/dokku-arm64.deb + cp -f "build/dokku_${NEXT_VERSION}_armhf.deb" build/package/dokku-armhf.deb + cp -f "build/dokku-${NEXT_VERSION}-1.x86_64.rpm" build/package/dokku-amd64.rpm if [[ "$RELEASE" != "build" ]]; then fn-publish-package "$IS_RELEASE" "raspbian" "build/dokku_${NEXT_VERSION}_armhf.deb" || log-fail "Error publishing deb package" @@ -416,9 +421,6 @@ main() { git reset -q HEAD plugins/*/plugin.toml git checkout -- plugins/*/plugin.toml fi - - echo "build/dokku_${NEXT_VERSION}_amd64.deb" >build/deb-filename - echo "build/dokku-${NEXT_VERSION}-1.x86_64.rpm" >build/rpm-filename } main "$@" diff --git a/tests/ci/setup.sh b/tests/ci/setup.sh index 231510e4e..5a5760649 100755 --- a/tests/ci/setup.sh +++ b/tests/ci/setup.sh @@ -74,14 +74,13 @@ build_dokku() { echo "=====> build_dokku on CIRCLE_NODE_INDEX: $CIRCLE_NODE_INDEX" "${ROOT_DIR}/contrib/release-dokku" build - cp "$(cat "${ROOT_DIR}/build/deb-filename")" "${ROOT_DIR}/build/dokku.deb" - cp "$(cat "${ROOT_DIR}/build/rpm-filename")" "${ROOT_DIR}/build/dokku.rpm" } install_dokku() { echo "=====> install_dokku on CIRCLE_NODE_INDEX: $CIRCLE_NODE_INDEX" - if [[ ! -f "${ROOT_DIR}/build/deb-filename" ]]; then + local architecture="$(dpkg --print-architecture)" + if [[ ! -f "${ROOT_DIR}/build/package/dokku-${architecture}.deb" ]]; then build_dokku fi @@ -98,9 +97,9 @@ EOF echo "-----> End debconf selections" sleep 5 - echo "-----> Start install $(cat "${ROOT_DIR}/build/deb-filename") via dpkg" - sudo TRACE=1 dpkg -i "$(cat "${ROOT_DIR}/build/deb-filename")" - echo "-----> End install $(cat "${ROOT_DIR}/build/deb-filename") via dpkg" + echo "-----> Start install ${ROOT_DIR}/build/package/dokku-${architecture}.deb via dpkg" + sudo TRACE=1 dpkg -i "${ROOT_DIR}/build/package/dokku-${architecture}.deb" + echo "-----> End install ${ROOT_DIR}/build/package/dokku-${architecture}.deb via dpkg" } build_dokku_docker_image() { From 7a7f44614dec7eebee244be02320e07e0f79441e Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Fri, 28 Jan 2022 18:25:18 -0500 Subject: [PATCH 8/9] fix: build correct image as multi-platform image --- contrib/release-dokku | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/contrib/release-dokku b/contrib/release-dokku index 436af96e3..fd6e5f139 100755 --- a/contrib/release-dokku +++ b/contrib/release-dokku @@ -43,8 +43,7 @@ fn-build-dokku() { pushd "$ROOT_DIR" >/dev/null GOLANG_VERSION="$(grep BUILD_IMAGE common.mk | cut -d' ' -f3 | cut -d':' -f2)" - docker buildx build \ - --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ + docker build \ --build-arg DOKKU_VERSION="$DOKKU_VERSION" \ --build-arg DOKKU_GIT_REV="$DOKKU_GIT_REV" \ --build-arg IS_RELEASE="$IS_RELEASE" \ @@ -351,8 +350,21 @@ fn-require-bin() { fn-build-docker-image() { declare desc="Builds the dokku docker image and tags it with the given version" - declare VERSION="$1" - docker build -t "dokku/dokku:$VERSION" . + declare VERSION="$1" IS_RELEASE="$2" + + if [[ "$IS_RELEASE" == "true" ]]; then + docker buildx build \ + --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ + --progress plain \ + --push \ + --tag "dokku/dokku:latest" \ + --tag "dokku/dokku:$VERSION" . + else + docker buildx build \ + --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ + --progress plain \ + --tag "dokku/dokku:$VERSION" . + fi } main() { @@ -407,13 +419,8 @@ main() { fn-publish-package "$IS_RELEASE" "deb" "build/dokku_${NEXT_VERSION}_arm64.deb" || log-fail "Error publishing deb package" fn-publish-package "$IS_RELEASE" "deb" "build/dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error publishing deb package" fn-publish-package "$IS_RELEASE" "rpm" "build/dokku-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error publishing rpm package" - fn-build-docker-image "$NEXT_VERSION" || log-fail "Error building docker image" + fn-build-docker-image "$NEXT_VERSION" "$IS_RELEASE" || log-fail "Error building docker image" - if [[ "$IS_RELEASE" == "true" ]]; then - docker tag "dokku/dokku:$NEXT_VERSION" "dokku/dokku:latest" - docker push "dokku/dokku:$NEXT_VERSION" - docker push "dokku/dokku:latest" - fi fn-repo-push-tags "$IS_RELEASE" fi From 110aa1f4d9e3d3b9f80c59796965d045df4f4fd6 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Fri, 28 Jan 2022 18:31:42 -0500 Subject: [PATCH 9/9] fix: run shfmt --- contrib/release-dokku | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/contrib/release-dokku b/contrib/release-dokku index fd6e5f139..109edb8a6 100755 --- a/contrib/release-dokku +++ b/contrib/release-dokku @@ -354,16 +354,16 @@ fn-build-docker-image() { if [[ "$IS_RELEASE" == "true" ]]; then docker buildx build \ - --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ - --progress plain \ - --push \ - --tag "dokku/dokku:latest" \ - --tag "dokku/dokku:$VERSION" . + --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ + --progress plain \ + --push \ + --tag "dokku/dokku:latest" \ + --tag "dokku/dokku:$VERSION" . else docker buildx build \ - --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ - --progress plain \ - --tag "dokku/dokku:$VERSION" . + --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ + --progress plain \ + --tag "dokku/dokku:$VERSION" . fi }