From c8d52267cbfb951a224d0a66116200633874462c Mon Sep 17 00:00:00 2001 From: Adrien Ferrand Date: Fri, 3 Jul 2020 13:41:43 +0200 Subject: [PATCH] Configure a script to build DNS snaps --- .../templates/jobs/packaging-jobs.yml | 23 +++++- {snap/local => tools/snap}/README.md | 0 {snap/local => tools/snap}/build.sh | 3 +- tools/snap/build_dns.sh | 72 ++++++++++++++++++ {snap/local => tools/snap}/common.sh | 0 .../snap}/compile_native_wheels.sh | 0 .../cffi-1.14.0-cp38-cp38-linux_aarch64.whl | Bin .../cffi-1.14.0-cp38-cp38-linux_armv7l.whl | Bin ...yptography-2.8-cp38-cp38-linux_aarch64.whl | Bin ...ryptography-2.8-cp38-cp38-linux_armv7l.whl | Bin 10 files changed, 95 insertions(+), 3 deletions(-) rename {snap/local => tools/snap}/README.md (100%) rename {snap/local => tools/snap}/build.sh (90%) create mode 100755 tools/snap/build_dns.sh rename {snap/local => tools/snap}/common.sh (100%) rename {snap/local => tools/snap}/compile_native_wheels.sh (100%) rename {snap/local => tools/snap}/packages/cffi/cffi-1.14.0-cp38-cp38-linux_aarch64.whl (100%) rename {snap/local => tools/snap}/packages/cffi/cffi-1.14.0-cp38-cp38-linux_armv7l.whl (100%) rename {snap/local => tools/snap}/packages/cryptography/cryptography-2.8-cp38-cp38-linux_aarch64.whl (100%) rename {snap/local => tools/snap}/packages/cryptography/cryptography-2.8-cp38-cp38-linux_armv7l.whl (100%) diff --git a/.azure-pipelines/templates/jobs/packaging-jobs.yml b/.azure-pipelines/templates/jobs/packaging-jobs.yml index 97904b0ba..991a920fd 100644 --- a/.azure-pipelines/templates/jobs/packaging-jobs.yml +++ b/.azure-pipelines/templates/jobs/packaging-jobs.yml @@ -71,7 +71,7 @@ jobs: vmImage: ubuntu-18.04 steps: - script: | - snap/local/build.sh ${ARCH} + tools/snap/build.sh ${ARCH} mv *.snap $(Build.ArtifactStagingDirectory) displayName: Build Certbot snap - task: PublishPipelineArtifact@1 @@ -79,6 +79,27 @@ jobs: path: $(Build.ArtifactStagingDirectory) artifact: snap-$(arch) displayName: Store snap artifact + - job: snap_dns_build + strategy: + matrix: + amd64: + ARCH: amd64 +# arm64: +# ARCH: arm64 +# armhf: +# ARCH: armhf + pool: + vmImage: ubuntu-18.04 + steps: + - script: | + tools/snap/build_dns.sh ${ARCH} ALL + mv certbot-dns-*/*.snap $(Build.ArtifactStagingDirectory) + displayName: Build Certbot DNS snaps + - task: PublishPipelineArtifact@1 + inputs: + path: $(Build.ArtifactStagingDirectory) + artifact: dns-snap-$(arch) + displayName: Store snaps artifacts - job: snap_run dependsOn: snap_build pool: diff --git a/snap/local/README.md b/tools/snap/README.md similarity index 100% rename from snap/local/README.md rename to tools/snap/README.md diff --git a/snap/local/build.sh b/tools/snap/build.sh similarity index 90% rename from snap/local/build.sh rename to tools/snap/build.sh index bbe5ba323..e0f0c781c 100755 --- a/snap/local/build.sh +++ b/tools/snap/build.sh @@ -1,6 +1,5 @@ #!/bin/bash -# Cross-compile the Certbot snap from local sources for the specified architecture, -# and install it if this architecture is also the the current machine one. +# Cross-compile the Certbot snap from local sources for the specified architecture. # This script is designed for CI tests purpose. # Usage: build.sh [amd64,arm64,armhf] set -ex diff --git a/tools/snap/build_dns.sh b/tools/snap/build_dns.sh new file mode 100755 index 000000000..48cf567e2 --- /dev/null +++ b/tools/snap/build_dns.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# Cross-compile the specified Certbot DNS plugins snaps from local sources for the specified architecture. +# This script is designed for CI tests purpose. +# Usage: build.sh [amd64,arm64,armhf] [DNS_PLUGIN1,DNS_PLUGIN2 or ALL] +set -ex + +SNAP_ARCH=$1 +DNS_PLUGINS=$2 + +if [[ -z "${SNAP_ARCH}" ]]; then + echo "You need to specify the target architecture" + exit 1 +fi + +if [[ -z "${DNS_PLUGINS}" ]]; then + echo "You need to specify the DNS plugins" + exit 1 +fi + +if [[ "${DNS_PLUGINS}" = "ALL" ]]; then + DNS_PLUGINS=$(find . -maxdepth 1 -type d -name "certbot-dns-*" -exec basename {} \; | paste -sd "," -) +fi + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +CERTBOT_DIR="$(dirname "$(dirname "${DIR}")")" + +# shellcheck source=common.sh +source "${DIR}/common.sh" + +RegisterQemuHandlers +ResolveArch "${SNAP_ARCH}" + +pushd "${DIR}/packages" +"${CERTBOT_DIR}/tools/simple_http_server.py" 8080 >/dev/null 2>&1 & +HTTP_SERVER_PID="$!" +popd + +function cleanup() { + kill "${HTTP_SERVER_PID}" +} + +trap cleanup EXIT + +SCRIPT=$(mktemp /tmp/script.XXXXXX.sh) +chmod +x "${SCRIPT}" + +SNAP_CONSTRAINTS=$(mktemp /tmp/snap-constraints.XXXXXX.txt) +python3 tools/strip_hashes.py letsencrypt-auto-source/pieces/dependency-requirements.txt | grep -v python-augeas > "${SNAP_CONSTRAINTS}" + +cat << "EOF" >> "${SCRIPT}" +#!/bin/bash +set -ex +IFS="," +for DNS_PLUGIN in ${DNS_PLUGINS}; do + pushd "${DNS_PLUGIN}" + cp /snap-constraints.txt . + snapcraft + popd +done +EOF + +docker run \ + --rm \ + --net=host \ + -v "${CERTBOT_DIR}:/certbot" \ + -v "${SCRIPT}:/script.sh" \ + -v "${SNAP_CONSTRAINTS}:/snap-constraints.txt" \ + -w "/certbot" \ + -e "DNS_PLUGINS=${DNS_PLUGINS}" \ + "adferrand/snapcraft:${DOCKER_ARCH}-stable" \ + /script.sh + #-e "PIP_EXTRA_INDEX_URL=http://localhost:8080" \ \ No newline at end of file diff --git a/snap/local/common.sh b/tools/snap/common.sh similarity index 100% rename from snap/local/common.sh rename to tools/snap/common.sh diff --git a/snap/local/compile_native_wheels.sh b/tools/snap/compile_native_wheels.sh similarity index 100% rename from snap/local/compile_native_wheels.sh rename to tools/snap/compile_native_wheels.sh diff --git a/snap/local/packages/cffi/cffi-1.14.0-cp38-cp38-linux_aarch64.whl b/tools/snap/packages/cffi/cffi-1.14.0-cp38-cp38-linux_aarch64.whl similarity index 100% rename from snap/local/packages/cffi/cffi-1.14.0-cp38-cp38-linux_aarch64.whl rename to tools/snap/packages/cffi/cffi-1.14.0-cp38-cp38-linux_aarch64.whl diff --git a/snap/local/packages/cffi/cffi-1.14.0-cp38-cp38-linux_armv7l.whl b/tools/snap/packages/cffi/cffi-1.14.0-cp38-cp38-linux_armv7l.whl similarity index 100% rename from snap/local/packages/cffi/cffi-1.14.0-cp38-cp38-linux_armv7l.whl rename to tools/snap/packages/cffi/cffi-1.14.0-cp38-cp38-linux_armv7l.whl diff --git a/snap/local/packages/cryptography/cryptography-2.8-cp38-cp38-linux_aarch64.whl b/tools/snap/packages/cryptography/cryptography-2.8-cp38-cp38-linux_aarch64.whl similarity index 100% rename from snap/local/packages/cryptography/cryptography-2.8-cp38-cp38-linux_aarch64.whl rename to tools/snap/packages/cryptography/cryptography-2.8-cp38-cp38-linux_aarch64.whl diff --git a/snap/local/packages/cryptography/cryptography-2.8-cp38-cp38-linux_armv7l.whl b/tools/snap/packages/cryptography/cryptography-2.8-cp38-cp38-linux_armv7l.whl similarity index 100% rename from snap/local/packages/cryptography/cryptography-2.8-cp38-cp38-linux_armv7l.whl rename to tools/snap/packages/cryptography/cryptography-2.8-cp38-cp38-linux_armv7l.whl