diff options
| author | Sean OMeara <[email protected]> | 2023-03-31 16:29:18 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-03-31 16:29:18 +0200 |
| commit | 2115b18ae379e7721897ca80da7559d4db20c973 (patch) | |
| tree | f9a39a3748beffcc52682e5b59c4351368f7cc46 /ci | |
| parent | 4ac3e7b864686ccc581f1b8c70d4b21a8212d5af (diff) | |
new drone bits
Diffstat (limited to 'ci')
| -rw-r--r-- | ci/Dockerfile-build.deb | 13 | ||||
| -rw-r--r-- | ci/Dockerfile-build.el6 (renamed from ci/Dockerfile.el6) | 8 | ||||
| -rw-r--r-- | ci/Dockerfile-build.rpm | 9 | ||||
| -rw-r--r-- | ci/Dockerfile-test.deb | 13 | ||||
| -rw-r--r-- | ci/Dockerfile-test.el6 | 4 | ||||
| -rw-r--r-- | ci/Dockerfile-test.rpm | 17 | ||||
| -rw-r--r-- | ci/Dockerfile.deb | 10 | ||||
| -rw-r--r-- | ci/Dockerfile.none | 5 | ||||
| -rw-r--r-- | ci/Dockerfile.rpm | 9 | ||||
| -rwxr-xr-x | ci/scripts/build.sh | 135 | ||||
| -rwxr-xr-x | ci/scripts/lib.sh | 63 | ||||
| -rwxr-xr-x | ci/scripts/munge_debian_changelog.sh | 2 | ||||
| -rwxr-xr-x | ci/scripts/publish.sh | 38 | ||||
| -rwxr-xr-x | ci/scripts/test.sh | 55 |
14 files changed, 246 insertions, 135 deletions
diff --git a/ci/Dockerfile-build.deb b/ci/Dockerfile-build.deb new file mode 100644 index 00000000..09ed717f --- /dev/null +++ b/ci/Dockerfile-build.deb @@ -0,0 +1,13 @@ +ARG ZT_NAME +FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${ZT_NAME}-builder as builder +WORKDIR /work/build +COPY . . +RUN pwd +RUN ls -la . +RUN make clean +RUN make debian +RUN ls -ls /work + +FROM scratch AS export +ARG ZT_NAME +COPY --from=builder /work/*.deb ./${ZT_NAME}/ diff --git a/ci/Dockerfile.el6 b/ci/Dockerfile-build.el6 index 46ba13c4..c5848c98 100644 --- a/ci/Dockerfile.el6 +++ b/ci/Dockerfile-build.el6 @@ -16,14 +16,14 @@ RUN apk add build-base RUN apk add openssl-libs-static COPY . . -RUN ZT_STATIC=1 make one +RUN ZT_STATIC=1 make RUN ls -la ARG DOCKER_ARCH FROM --platform=linux/${DOCKER_ARCH} centos:6 AS stage WORKDIR /root/rpmbuild/BUILD COPY . . -COPY --from=builder zerotier-one ./ +COPY --from=builder zerotier-* ./ RUN curl https://gist.githubusercontent.com/someara/b363002ba6e57b3c474dd027d4daef85/raw/4ac5534139752fc92fbe1a53599a390214f69615/el6%2520vault --output /etc/yum.repos.d/CentOS-Base.repo RUN uname -a RUN yum -y install make gcc rpm-build @@ -32,5 +32,5 @@ RUN ls -la RUN make redhat FROM scratch AS export -ARG PLATFORM -COPY --from=stage /root/rpmbuild/RPMS/*/*.rpm ./${PLATFORM}/ +ARG ZT_NAME +COPY --from=stage /root/rpmbuild/RPMS/*/*.rpm ./${ZT_NAME}/ diff --git a/ci/Dockerfile-build.rpm b/ci/Dockerfile-build.rpm new file mode 100644 index 00000000..cab00a06 --- /dev/null +++ b/ci/Dockerfile-build.rpm @@ -0,0 +1,9 @@ +ARG ZT_NAME +FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${ZT_NAME}-builder as builder +WORKDIR /root/rpmbuild/BUILD +COPY . . +RUN make redhat + +FROM scratch AS export +ARG ZT_NAME +COPY --from=builder /root/rpmbuild/RPMS/*/*.rpm ./${ZT_NAME}/ diff --git a/ci/Dockerfile-test.deb b/ci/Dockerfile-test.deb new file mode 100644 index 00000000..7c709a86 --- /dev/null +++ b/ci/Dockerfile-test.deb @@ -0,0 +1,13 @@ +ARG ZT_NAME +FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${ZT_NAME}-tester +ARG BASEURL +ARG VERSION +ARG DEB_ARCH +ARG ZT_NAME +ARG DISTRO +RUN curl -s http://${BASEURL}/key.gpg -o /etc/apt/trusted.gpg.d/zerotier.gpg +RUN echo "deb [arch=${DEB_ARCH} signed-by=/etc/apt/trusted.gpg.d/zerotier.gpg] http://${BASEURL}/${DISTRO} ${ZT_NAME} main" > /etc/apt/sources.list.d/zerotier.list +RUN apt-get -qq update +RUN apt-get -qq install zerotier-one=${VERSION} + +RUN ldd $(which zerotier-cli) diff --git a/ci/Dockerfile-test.el6 b/ci/Dockerfile-test.el6 new file mode 100644 index 00000000..49966731 --- /dev/null +++ b/ci/Dockerfile-test.el6 @@ -0,0 +1,4 @@ +ARG DOCKER_ARCH +FROM --platform=linux/${DOCKER_ARCH} centos:6 +RUN printf "[C6.10-base]\nname=CentOS-6.10 - Base\nbaseurl=http://vault.epel.cloud/6.10/os/\$basearch/\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6\nenabled=1\nmetadata_expire=never\n" > /etc/yum.repos.d/CentOS-Base.repo +RUN yum -y install curl diff --git a/ci/Dockerfile-test.rpm b/ci/Dockerfile-test.rpm new file mode 100644 index 00000000..6a98607b --- /dev/null +++ b/ci/Dockerfile-test.rpm @@ -0,0 +1,17 @@ +ARG ZT_NAME +FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${ZT_NAME}-tester +ARG BASEURL +ARG VERSION +ARG DEB_ARCH +ARG ZT_NAME +ARG DISTRO +ARG DNF_ARCH +RUN curl -s http://${BASEURL}/key.asc -o /etc/pki/rpm-gpg/RPM-GPG-KEY-zerotier +RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-zerotier +RUN rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' +RUN printf "[zerotier]\nname=zerotier\nbaseurl=http://${BASEURL}/${DISTRO}/${ZT_NAME}/$basearch/\nenabled=1\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-zerotier\n" > /etc/yum.repos.d/zerotier.repo + +# RUN yum -v repolist +RUN setarch ${DNF_ARCH} yum -y install zerotier-one-${VERSION} +RUN file $(which zerotier-cli) +RUN ldd $(which zerotier-cli) diff --git a/ci/Dockerfile.deb b/ci/Dockerfile.deb deleted file mode 100644 index 151bca39..00000000 --- a/ci/Dockerfile.deb +++ /dev/null @@ -1,10 +0,0 @@ -ARG PLATFORM -FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${PLATFORM}-builder as stage -WORKDIR /work/build -COPY . . -RUN make debian -RUN ls -ls /work - -FROM scratch AS export -ARG PLATFORM -COPY --from=stage /work/*.deb ./${PLATFORM}/ diff --git a/ci/Dockerfile.none b/ci/Dockerfile.none deleted file mode 100644 index bee0128f..00000000 --- a/ci/Dockerfile.none +++ /dev/null @@ -1,5 +0,0 @@ -ARG PLATFORM -FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${PLATFORM}-builder as stage -WORKDIR /work -COPY . . -RUN make diff --git a/ci/Dockerfile.rpm b/ci/Dockerfile.rpm deleted file mode 100644 index 0965148b..00000000 --- a/ci/Dockerfile.rpm +++ /dev/null @@ -1,9 +0,0 @@ -ARG PLATFORM -FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${PLATFORM}-builder as stage -WORKDIR /root/rpmbuild/BUILD -COPY . . -RUN make redhat - -FROM scratch AS export -ARG PLATFORM -COPY --from=stage /root/rpmbuild/RPMS/*/*.rpm ./${PLATFORM}/ diff --git a/ci/scripts/build.sh b/ci/scripts/build.sh index bc28e42f..a4b8ca94 100755 --- a/ci/scripts/build.sh +++ b/ci/scripts/build.sh @@ -2,125 +2,48 @@ set -euo pipefail IFS=$'\n\t' -export PLATFORM=$1 -export ZT_ISA=$2 -export VERSION=$3 -export EVENT=$4 +ZT_NAME="$1" ; shift +DISTRO="$1" ; shift +ZT_ISA="$1" ; shift +VERSION="$1" ; shift +BUILD_EVENT="$1" ; shift -case $PLATFORM in - sid) - export PKGFMT=none - ;; - el*|fc*|amzn*) - export PKGFMT=rpm - ;; - *) - export PKGFMT=deb -esac +source "$(dirname $0)/lib.sh" -# -# Allow user to drop in custom Dockerfile for PLATFORM -# - -if [ -f "ci/Dockerfile.${PLATFORM}" ]; then - export DOCKERFILE="ci/Dockerfile.${PLATFORM}" +if [ -f "ci/Dockerfile-build.${ZT_NAME}" ]; then + DOCKERFILE="ci/Dockerfile-build.${ZT_NAME}" else - export DOCKERFILE="ci/Dockerfile.${PKGFMT}" + DOCKERFILE="ci/Dockerfile-build.${PKGFMT}" fi -# -# Rust sometimes gets confused about where it's running. -# Normally, the build images will have Rust pre-baked. -# Pass RUST_TRIPLET for convenience when using a custom Dockerfile -# - -case $ZT_ISA in - 386) - export DOCKER_ARCH=386 - export RUST_TRIPLET=i686-unknown-linux-gnu - ;; - amd64) - export DOCKER_ARCH=amd64 - export RUST_TRIPLET=x86_64-unknown-linux-gnu - ;; - armv7) - export DOCKER_ARCH=arm/v7 - export RUST_TRIPLET=armv7-unknown-linux-gnueabihf - ;; - arm64) - export DOCKER_ARCH=arm64/v8 - export RUST_TRIPLET=aarch64-unknown-linux-gnu - ;; - riscv64) - export DOCKER_ARCH=riscv64 - export RUST_TRIPLET=riscv64gc-unknown-linux-gnu - ;; - ppc64le) - export DOCKER_ARCH=ppc64le - export RUST_TRIPLET=powerpc64le-unknown-linux-gnu - ;; - mips64le) - export DOCKER_ARCH=mips64le - export RUST_TRIPLET=mips64el-unknown-linux-gnuabi64 - ;; - s390x) - export DOCKER_ARCH=s390x - export RUST_TRIPLET=s390x-unknown-linux-gnu - ;; - *) - echo "ERROR: could not determine architecture settings. PLEASE FIX ME" - exit 1 - ;; -esac - -# -# Print debug info -# - echo "#~~~~~~~~~~~~~~~~~~~~" echo "$0 variables:" echo "nproc: $(nproc)" +echo "ZT_NAME: ${ZT_NAME}" +echo "DISTRO: ${DISTRO}" echo "ZT_ISA: ${ZT_ISA}" +echo "VERSION: ${VERSION}" +echo "BUILD_EVENT: ${BUILD_EVENT}" echo "DOCKER_ARCH: ${DOCKER_ARCH}" +echo "DNF_ARCH: ${DNF_ARCH}" echo "RUST_TRIPLET: ${RUST_TRIPLET}" -echo "VERSION: ${VERSION}" -echo "EVENT: ${EVENT}" echo "PKGFMT: ${PKGFMT}" echo "PWD: ${PWD}" echo "DOCKERFILE: ${DOCKERFILE}" echo "#~~~~~~~~~~~~~~~~~~~~" -# -# Munge RPM and Deb -# - -if [ ${PKGFMT} != "none" ] && [ ${EVENT} != "tag" ]; then - make munge_rpm zerotier-one.spec VERSION=${VERSION} - make munge_deb debian/changelog VERSION=${VERSION} -fi - -# -# Assemble buildx arguments -# - -build_args=( - --no-cache - --build-arg PLATFORM=${PLATFORM} - --build-arg RUST_TRIPLET=${RUST_TRIPLET} - --build-arg DOCKER_ARCH=${DOCKER_ARCH} - --platform linux/${DOCKER_ARCH} - -f ${DOCKERFILE} - -t build - . -) - -if [ ${PKGFMT} != "none" ]; then - build_args+=("--output type=local,dest=.") - build_args+=("--target export") -fi - -# -# Do build -# - -docker buildx build ${build_args[@]} +make munge_rpm zerotier-one.spec VERSION=${VERSION} +make munge_deb debian/changelog VERSION=${VERSION} + +docker buildx build \ + --no-cache=true \ + --build-arg ZT_NAME="${ZT_NAME}" \ + --build-arg RUST_TRIPLET="${RUST_TRIPLET}" \ + --build-arg DOCKER_ARCH="${DOCKER_ARCH}" \ + --build-arg DNF_ARCH="${DNF_ARCH}" \ + --platform linux/${DOCKER_ARCH} \ + -f ${DOCKERFILE} \ + -t build \ + . \ + --output type=local,dest=. \ + --target export diff --git a/ci/scripts/lib.sh b/ci/scripts/lib.sh new file mode 100755 index 00000000..43c35762 --- /dev/null +++ b/ci/scripts/lib.sh @@ -0,0 +1,63 @@ + +case $ZT_NAME in + el*|fc*|amzn*) + export PKGFMT=rpm + ;; + *) + export PKGFMT=deb +esac + +case $ZT_ISA in + 386) + export DOCKER_ARCH=386 + export DEB_ARCH=i386 + export DNF_ARCH=i686 + export RUST_TRIPLET=i686-unknown-linux-gnu + ;; + amd64) + export DOCKER_ARCH=amd64 + export DEB_ARCH=amd64 + export DNF_ARCH=x86_64 + export RUST_TRIPLET=x86_64-unknown-linux-gnu + ;; + armv7) + export DOCKER_ARCH=arm/v7 + export DNF_ARCH=armv7 + export DEB_ARCH=armhf + export RUST_TRIPLET=armv7-unknown-linux-gnueabihf + ;; + arm64) + export DOCKER_ARCH=arm64/v8 + export DEB_ARCH=arm64 + export DNF_ARCH=linux64 + export RUST_TRIPLET=aarch64-unknown-linux-gnu + ;; + riscv64) + export DOCKER_ARCH=riscv64 + export DEB_ARCH=riscv64 + export DNF_ARCH=riscv64 + export RUST_TRIPLET=riscv64gc-unknown-linux-gnu + ;; + ppc64le) + export DOCKER_ARCH=ppc64le + export DEB_ARCH=ppc64el + export DNF_ARCH=ppc64le + export RUST_TRIPLET=powerpc64le-unknown-linux-gnu + ;; + mips64le) + export DOCKER_ARCH=mips64le + export DEB_ARCH=mips64le + export DNF_ARCH=mips64le + export RUST_TRIPLET=mips64el-unknown-linux-gnuabi64 + ;; + s390x) + export DOCKER_ARCH=s390x + export DEB_ARCH=s390x + export DNF_ARCH=s390x + export RUST_TRIPLET=s390x-unknown-linux-gnu + ;; + *) + echo "ERROR: could not determine architecture settings. PLEASE FIX ME" + exit 1 + ;; +esac diff --git a/ci/scripts/munge_debian_changelog.sh b/ci/scripts/munge_debian_changelog.sh index 86cedf72..d37cb063 100755 --- a/ci/scripts/munge_debian_changelog.sh +++ b/ci/scripts/munge_debian_changelog.sh @@ -31,7 +31,7 @@ else fi awk -v version=${VERSION} -v date=${DATE} -v name=${NAME} -v message=${MESSAGE} \ - 'BEGIN{print "zerotier-one (" version ") unstable; urgency=medium\n\n * " message "\n\n -- " name " " date "\n" }{ print }' \ + 'BEGIN{print "zerotier-one (" version ") stable; urgency=medium\n\n * " message "\n\n -- " name " " date "\n" }{ print }' \ ${FILE} > ${FILE}.new mv ${FILE}.new ${FILE} diff --git a/ci/scripts/publish.sh b/ci/scripts/publish.sh new file mode 100755 index 00000000..fa1e2468 --- /dev/null +++ b/ci/scripts/publish.sh @@ -0,0 +1,38 @@ +#!/bin/bash +set -euo pipefail +IFS=$'\n\t' + +ZT_NAME="$1" ; shift +DISTRO="$1" ; shift +ZT_ISA="$1" ; shift +VERSION="$1" ; shift +BUILD_EVENT="$1" ; shift + +source "$(dirname $0)/lib.sh" + +if [ ${BUILD_EVENT} == "tag" ]; then + CHANNEL="zerotier-releases" +else + CHANNEL="zerotier-builds" +fi + +function publish_rpm { + mkdir -p /${CHANNEL}/${DISTRO} + ls -la /${CHANNEL} + ls -la . + cp -a ${ZT_NAME} /${CHANNEL}/${DISTRO} +} + +function publish_deb { + mkdir -p /${CHANNEL}/${DISTRO}/pool/dists/${ZT_NAME}/main + cp -a ${ZT_NAME}/* /${CHANNEL}/${DISTRO}/pool/dists/${ZT_NAME}/main +} + +case ${PKGFMT} in + "rpm") + publish_rpm + ;; + "deb") + publish_deb +esac + diff --git a/ci/scripts/test.sh b/ci/scripts/test.sh new file mode 100755 index 00000000..931e9bb9 --- /dev/null +++ b/ci/scripts/test.sh @@ -0,0 +1,55 @@ +#!/bin/bash +set -euo pipefail +IFS=$'\n\t' + +ZT_NAME="$1" ; shift +DISTRO="$1" ; shift +ZT_ISA="$1" ; shift +VERSION="$1" ; shift +BUILD_EVENT="$1" ; shift + +source "$(dirname $0)/lib.sh" + +if [ -f "ci/Dockerfile-test.${ZT_NAME}" ]; then + DOCKERFILE="ci/Dockerfile-test.${ZT_NAME}" +else + DOCKERFILE="ci/Dockerfile-test.${PKGFMT}" +fi + +if [ ${BUILD_EVENT} == "tag" ]; then + BASEURL="zerotier-releases.home.arpa" +else + BASEURL="zerotier-builds.home.arpa" +fi + +echo "#~~~~~~~~~~~~~~~~~~~~" +echo "$0 variables:" +echo "nproc: $(nproc)" +echo "ZT_NAME: ${ZT_NAME}" +echo "DISTRO: ${DISTRO}" +echo "ZT_ISA: ${ZT_ISA}" +echo "VERSION: ${VERSION}" +echo "BUILD_EVENT: ${BUILD_EVENT}" +echo "DOCKER_ARCH: ${DOCKER_ARCH}" +echo "DNF_ARCH: ${DNF_ARCH}" +echo "RUST_TRIPLET: ${RUST_TRIPLET}" +echo "PKGFMT: ${PKGFMT}" +echo "PWD: ${PWD}" +echo "DOCKERFILE: ${DOCKERFILE}" +echo "#~~~~~~~~~~~~~~~~~~~~" + +# docker pull -q --platform="linux/${DOCKER_ARCH}" 084037375216.dkr.ecr.us-east-2.amazonaws.com/${ZT_NAME}-tester + +docker buildx build \ + --build-arg BASEURL="${BASEURL}" \ + --build-arg ZT_NAME="${ZT_NAME}" \ + --build-arg DISTRO="${DISTRO}" \ + --build-arg DEB_ARCH="${DEB_ARCH}" \ + --build-arg DNF_ARCH="${DNF_ARCH}" \ + --build-arg VERSION="${VERSION}" \ + --build-arg DOCKER_ARCH="${DOCKER_ARCH}" \ + --platform "linux/${DOCKER_ARCH}" \ + --no-cache \ + -f ${DOCKERFILE} \ + -t test \ + . |
