summaryrefslogtreecommitdiff
path: root/ci
diff options
context:
space:
mode:
authorSean OMeara <[email protected]>2023-03-31 16:29:18 +0200
committerGitHub <[email protected]>2023-03-31 16:29:18 +0200
commit2115b18ae379e7721897ca80da7559d4db20c973 (patch)
treef9a39a3748beffcc52682e5b59c4351368f7cc46 /ci
parent4ac3e7b864686ccc581f1b8c70d4b21a8212d5af (diff)
new drone bits
Diffstat (limited to 'ci')
-rw-r--r--ci/Dockerfile-build.deb13
-rw-r--r--ci/Dockerfile-build.el6 (renamed from ci/Dockerfile.el6)8
-rw-r--r--ci/Dockerfile-build.rpm9
-rw-r--r--ci/Dockerfile-test.deb13
-rw-r--r--ci/Dockerfile-test.el64
-rw-r--r--ci/Dockerfile-test.rpm17
-rw-r--r--ci/Dockerfile.deb10
-rw-r--r--ci/Dockerfile.none5
-rw-r--r--ci/Dockerfile.rpm9
-rwxr-xr-xci/scripts/build.sh135
-rwxr-xr-xci/scripts/lib.sh63
-rwxr-xr-xci/scripts/munge_debian_changelog.sh2
-rwxr-xr-xci/scripts/publish.sh38
-rwxr-xr-xci/scripts/test.sh55
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 \
+ .