diff --git a/Makefile b/Makefile index 720702438..a6e9b3972 100644 --- a/Makefile +++ b/Makefile @@ -110,7 +110,11 @@ endif addman: help2man man-db mkdir -p /usr/local/share/man/man1 +ifneq ("$(wildcard /usr/local/share/man/man1/dokku.1-generated)","") + cp /usr/local/share/man/man1/dokku.1-generated /usr/local/share/man/man1/dokku.1 +else help2man -Nh help -v version -n "configure and get information from your dokku installation" -o /usr/local/share/man/man1/dokku.1 dokku +endif mandb version: diff --git a/common.mk b/common.mk index e9c409c25..c147b4e3c 100644 --- a/common.mk +++ b/common.mk @@ -3,8 +3,9 @@ GO_PLUGIN_MAKE_TARGET ?= build GO_REPO_ROOT := /go/src/github.com/dokku/dokku BUILD_IMAGE := golang:1.15.6 GO_BUILD_CACHE ?= /tmp/dokku-go-build-cache -GO_MOD_CACHE ?= /tmp/dokku-go-mod-mod -GO_ROOT_MOUNT ?= $$PWD/../..:$(GO_REPO_ROOT) +GO_MOD_CACHE ?= /tmp/dokku-go-mod-mod +GO_ROOT_MOUNT ?= $$PWD/../..:$(GO_REPO_ROOT) +GOARCH ?= amd64 .PHONY: build-in-docker build clean src-clean @@ -20,7 +21,7 @@ build-in-docker: clean -e GO111MODULE=on \ -w $(GO_REPO_ROOT)/plugins/$(PLUGIN_NAME) \ $(BUILD_IMAGE) \ - bash -c "GO_ARGS='$(GO_ARGS)' make -j4 $(GO_PLUGIN_MAKE_TARGET)" || exit $$? + bash -c "GO_ARGS='$(GO_ARGS)' CGO_ENABLED=0 GOOS=linux GOARCH=$(GOARCH) make -j4 $(GO_PLUGIN_MAKE_TARGET)" || exit $$? clean: rm -rf $(BUILD) diff --git a/contrib/build-dokku.Dockerfile b/contrib/build-dokku.Dockerfile index 2203eb749..83973b119 100644 --- a/contrib/build-dokku.Dockerfile +++ b/contrib/build-dokku.Dockerfile @@ -1,4 +1,4 @@ -FROM dokku/build-base:0.0.1 +FROM dokku/build-base:0.0.1 AS builder ENV DEBIAN_FRONTEND=noninteractive @@ -8,8 +8,8 @@ RUN command -v fpm >/dev/null || sudo gem install fpm --no-ri --no-rdoc ARG GOLANG_VERSION RUN wget -qO /tmp/go${GOLANG_VERSION}.linux-amd64.tar.gz https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz \ - && tar -C /usr/local -xzf /tmp/go${GOLANG_VERSION}.linux-amd64.tar.gz \ - && cp /usr/local/go/bin/* /usr/local/bin + && tar -C /usr/local -xzf /tmp/go${GOLANG_VERSION}.linux-amd64.tar.gz \ + && cp /usr/local/go/bin/* /usr/local/bin ARG WORKDIR=/go/src/github.com/dokku/dokku @@ -22,19 +22,39 @@ RUN make deb-setup rpm-setup sshcommand plugn COPY . ${WORKDIR} +ENV GOPATH=/go + +FROM builder as amd64 + ARG PLUGIN_MAKE_TARGET ARG DOKKU_VERSION=master ARG DOKKU_GIT_REV ARG IS_RELEASE=false -ENV GOPATH=/go +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 \ + make version copyfiles \ + && make deb-dokku rpm-dokku + +FROM builder as armhf + +COPY --from=amd64 /tmp /tmp +COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated + +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 \ - make version copyfiles \ - && make deb-dokku rpm-dokku + DOKKU_VERSION=${DOKKU_VERSION} \ + DOKKU_GIT_REV=${DOKKU_GIT_REV} \ + IS_RELEASE=${IS_RELEASE} \ + SKIP_GO_CLEAN=true \ + GOARCH=arm make version copyfiles \ + && DOKKU_ARCHITECTURE=armhf GOARCH=arm make deb-dokku RUN ls -lha /tmp/ diff --git a/contrib/release-dokku b/contrib/release-dokku index 82191f21c..faa929f24 100755 --- a/contrib/release-dokku +++ b/contrib/release-dokku @@ -49,6 +49,7 @@ fn-build-dokku() { --build-arg IS_RELEASE="$IS_RELEASE" \ --build-arg PLUGIN_MAKE_TARGET="build" \ --build-arg GOLANG_VERSION="$GOLANG_VERSION" \ + --progress plain \ -f "contrib/build-dokku.Dockerfile" \ -t "$NAME" . return "$?" @@ -134,8 +135,19 @@ fn-publish-package() { [[ "$IS_RELEASE" == "true" ]] && REPOSITORY=dokku/dokku [[ "$RELEASE_TYPE" == "rpm" ]] && DIST=el/7 + [[ "$RELEASE_TYPE" == "raspbian" ]] && DIST=raspbian - if [[ "$DIST" == "ubuntu" ]]; then + if [[ "$RELEASE_TYPE" == "raspbian" ]]; then + OS_IDS=("buster") + for OS_ID in "${OS_IDS[@]}"; do + log-info "(release-dokku) pushing deb to packagecloud.com/${REPOSITORY}/${DIST}" + package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME" + ex="$?" + if [[ "$ex" -ne "0" ]]; then + EXIT_CODE="$ex" + fi + done + elif [[ "$DIST" == "ubuntu" ]]; then OS_IDS=("bionic" "focal") for OS_ID in "${OS_IDS[@]}"; do log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}" @@ -379,11 +391,13 @@ 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}_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}_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" diff --git a/deb.mk b/deb.mk index 039d29791..249221cb8 100644 --- a/deb.mk +++ b/deb.mk @@ -1,8 +1,7 @@ -BUILD_DIRECTORY ?= /tmp - -DOKKU_DESCRIPTION = 'Docker powered PaaS that helps you build and manage the lifecycle of applications' -DOKKU_REPO_NAME ?= dokku/dokku -DOKKU_ARCHITECTURE = amd64 +BUILD_DIRECTORY ?= /tmp +DOKKU_DESCRIPTION = 'Docker powered PaaS that helps you build and manage the lifecycle of applications' +DOKKU_REPO_NAME ?= dokku/dokku +DOKKU_ARCHITECTURE ?= amd64 ifndef IS_RELEASE IS_RELEASE = true @@ -45,9 +44,8 @@ ifneq (,$(findstring false,$(IS_RELEASE))) endif cp -r debian /tmp/build-dokku/DEBIAN + sed -i.bak "s/^Architecture: .*/Architecture: $(DOKKU_ARCHITECTURE)/g" /tmp/build-dokku/DEBIAN/control && rm /tmp/build-dokku/DEBIAN/control.bak rm -f /tmp/build-dokku/DEBIAN/lintian-overrides cp debian/lintian-overrides /tmp/build-dokku/usr/share/lintian/overrides/dokku sed -i.bak "s/^Version: .*/Version: `cat /tmp/build-dokku/var/lib/dokku/STABLE_VERSION`/g" /tmp/build-dokku/DEBIAN/control && rm /tmp/build-dokku/DEBIAN/control.bak dpkg-deb --build /tmp/build-dokku "$(BUILD_DIRECTORY)/dokku_`cat /tmp/build-dokku/var/lib/dokku/VERSION`_$(DOKKU_ARCHITECTURE).deb" - lintian "$(BUILD_DIRECTORY)/dokku_`cat /tmp/build-dokku/var/lib/dokku/VERSION`_$(DOKKU_ARCHITECTURE).deb" - diff --git a/tests/ci/setup.sh b/tests/ci/setup.sh index d5bf11440..231510e4e 100755 --- a/tests/ci/setup.sh +++ b/tests/ci/setup.sh @@ -55,6 +55,7 @@ install_dependencies() { sudo apt-get -qq -y --no-install-recommends install cgroupfs-mount dos2unix jq nginx debconf-utils sudo cp "${ROOT_DIR}/tests/dhparam.pem" /etc/nginx/dhparam.pem + ls -lah "${ROOT_DIR}/build/" sudo dpkg -i \ "${ROOT_DIR}/build/$DOCKER_IMAGE_LABELER_PACKAGE_NAME" \ "${ROOT_DIR}/build/$HEROKUISH_PACKAGE_NAME" \