mirror of
https://github.com/ZeroTier/ZeroTierOne
synced 2025-07-05 20:41:44 -07:00
new drone bits
This commit is contained in:
parent
4ac3e7b864
commit
2115b18ae3
23 changed files with 11723 additions and 2372 deletions
13
ci/Dockerfile-build.deb
Normal file
13
ci/Dockerfile-build.deb
Normal file
|
@ -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}/
|
|
@ -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}/
|
9
ci/Dockerfile-build.rpm
Normal file
9
ci/Dockerfile-build.rpm
Normal file
|
@ -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}/
|
13
ci/Dockerfile-test.deb
Normal file
13
ci/Dockerfile-test.deb
Normal file
|
@ -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)
|
4
ci/Dockerfile-test.el6
Normal file
4
ci/Dockerfile-test.el6
Normal file
|
@ -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
|
17
ci/Dockerfile-test.rpm
Normal file
17
ci/Dockerfile-test.rpm
Normal file
|
@ -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)
|
|
@ -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}/
|
|
@ -1,5 +0,0 @@
|
|||
ARG PLATFORM
|
||||
FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${PLATFORM}-builder as stage
|
||||
WORKDIR /work
|
||||
COPY . .
|
||||
RUN make
|
|
@ -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}/
|
|
@ -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 "DOCKER_ARCH: ${DOCKER_ARCH}"
|
||||
echo "RUST_TRIPLET: ${RUST_TRIPLET}"
|
||||
echo "VERSION: ${VERSION}"
|
||||
echo "EVENT: ${EVENT}"
|
||||
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 "#~~~~~~~~~~~~~~~~~~~~"
|
||||
|
||||
#
|
||||
# Munge RPM and Deb
|
||||
#
|
||||
make munge_rpm zerotier-one.spec VERSION=${VERSION}
|
||||
make munge_deb debian/changelog VERSION=${VERSION}
|
||||
|
||||
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[@]}
|
||||
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
|
||||
|
|
63
ci/scripts/lib.sh
Executable file
63
ci/scripts/lib.sh
Executable file
|
@ -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
|
|
@ -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}
|
||||
|
|
38
ci/scripts/publish.sh
Executable file
38
ci/scripts/publish.sh
Executable file
|
@ -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
|
||||
|
55
ci/scripts/test.sh
Executable file
55
ci/scripts/test.sh
Executable file
|
@ -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 \
|
||||
.
|
Loading…
Add table
Add a link
Reference in a new issue