#!/bin/sh set -x set -e VERSION="$1" SRCDIR="$(pwd)" NATIVE_TARBALL="zig-linux-$(uname -m)-$VERSION.tar.xz" # Check for all the builds being completed. It's expected that this script is run several times # before they are all complete. AARCH64_LINUX_JSON_URL="https://ziglang.org/builds/aarch64-linux-$VERSION.json" X86_64_LINUX_JSON_URL="https://ziglang.org/builds/x86_64-linux-$VERSION.json" X86_64_WINDOWS_JSON_URL="https://ziglang.org/builds/x86_64-windows-$VERSION.json" X86_64_MACOS_JSON_URL="https://ziglang.org/builds/x86_64-macos-$VERSION.json" X86_64_FREEBSD_JSON_URL="https://ziglang.org/builds/x86_64-freebsd-$VERSION.json" # If any of these fail, it's not really this job failing; rather we have detected # that this job will be called again later when other jobs have completed. curl --fail -I "$AARCH64_LINUX_JSON_URL" >/dev/null || exit 0 curl --fail -I "$X86_64_LINUX_JSON_URL" >/dev/null || exit 0 curl --fail -I "$X86_64_WINDOWS_JSON_URL" >/dev/null || exit 0 curl --fail -I "$X86_64_MACOS_JSON_URL" >/dev/null || exit 0 curl --fail -I "$X86_64_FREEBSD_JSON_URL" >/dev/null || exit 0 # Without --user, this gave me: # ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied pip3 install s3cmd --user S3CMD="$HOME/.local/bin/s3cmd" # This is the user when pushing to the website repo. git config --global user.email "ziggy@ziglang.org" git config --global user.name "Ziggy" # Refresh this with `ssh-keyscan github.com` from a trusted Internet connection. # We hard code the public key here to detect man-in-the-middle attacks. echo "github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" >> ~/.ssh/known_hosts # We don't want the .git folder inside the tarball. rm -rf .git cd "$HOME" wget "https://ziglang.org/builds/$NATIVE_TARBALL" tar xf "$NATIVE_TARBALL" ZIGDIR="$(pwd)/$(basename $NATIVE_TARBALL .tar.xz)" ZIG="$ZIGDIR/zig" LANGREF="$ZIGDIR/docs/langref.html" SRCTARBALLDIR="zig-$VERSION" export SRC_TARBALL="$SRCTARBALLDIR.tar.xz" mv "$SRCDIR" "$SRCTARBALLDIR" tar cfJ "$SRC_TARBALL" "$SRCTARBALLDIR" export SRC_SHASUM=$(sha256sum $SRC_TARBALL | cut '-d ' -f1) export SRC_BYTESIZE=$(wc -c < $SRC_TARBALL) X86_64_WINDOWS_JSON=$(curl --fail "$X86_64_WINDOWS_JSON_URL" || exit 1) export X86_64_WINDOWS_TARBALL="$(echo "$X86_64_WINDOWS_JSON" | jq .tarball -r)" export X86_64_WINDOWS_BYTESIZE="$(echo "$X86_64_WINDOWS_JSON" | jq .size -r)" export X86_64_WINDOWS_SHASUM="$(echo "$X86_64_WINDOWS_JSON" | jq .shasum -r)" X86_64_MACOS_JSON=$(curl --fail "$X86_64_MACOS_JSON_URL" || exit 1) export X86_64_MACOS_TARBALL="$(echo "$X86_64_MACOS_JSON" | jq .tarball -r)" export X86_64_MACOS_BYTESIZE="$(echo "$X86_64_MACOS_JSON" | jq .size -r)" export X86_64_MACOS_SHASUM="$(echo "$X86_64_MACOS_JSON" | jq .shasum -r)" X86_64_LINUX_JSON=$(curl --fail "$X86_64_LINUX_JSON_URL" || exit 1) export X86_64_LINUX_TARBALL="$(echo "$X86_64_LINUX_JSON" | jq .tarball -r)" export X86_64_LINUX_BYTESIZE="$(echo "$X86_64_LINUX_JSON" | jq .size -r)" export X86_64_LINUX_SHASUM="$(echo "$X86_64_LINUX_JSON" | jq .shasum -r)" AARCH64_LINUX_JSON=$(curl --fail "$AARCH64_LINUX_JSON_URL" || exit 1) export AARCH64_LINUX_TARBALL="$(echo "$AARCH64_LINUX_JSON" | jq .tarball -r)" export AARCH64_LINUX_BYTESIZE="$(echo "$AARCH64_LINUX_JSON" | jq .size -r)" export AARCH64_LINUX_SHASUM="$(echo "$AARCH64_LINUX_JSON" | jq .shasum -r)" X86_64_FREEBSD_JSON=$(curl --fail "$X86_64_FREEBSD_JSON_URL" || exit 1) export X86_64_FREEBSD_TARBALL="$(echo "$X86_64_FREEBSD_JSON" | jq .tarball -r)" export X86_64_FREEBSD_BYTESIZE="$(echo "$X86_64_FREEBSD_JSON" | jq .size -r)" export X86_64_FREEBSD_SHASUM="$(echo "$X86_64_FREEBSD_JSON" | jq .shasum -r)" export MASTER_DATE="$(date +%Y-%m-%d)" export MASTER_VERSION="$VERSION" cd "$SRCTARBALLDIR/ci/srht" "$ZIG" run update-download-page.zig CIDIR="$(pwd)" # Create index.json and index.html and update the website repo. cd "$HOME" git clone git@github.com:ziglang/www.ziglang.org.git cd www.ziglang.org WWWDIR="$(pwd)" $S3CMD put -P --no-mime-magic --add-header="cache-control: public, max-age=31536000, immutable" "$HOME/$SRC_TARBALL" s3://ziglang.org/builds/ cd "$WWWDIR" cp "$CIDIR/out/index.json" data/releases.json mkdir -p content/documentation/master/std cp "$LANGREF" content/documentation/master/index.html cp "$ZIGDIR/docs/std/index.html" content/documentation/master/std/index.html cp "$ZIGDIR/docs/std/data.js" content/documentation/master/std/data.js cp "$ZIGDIR/docs/std/main.js" content/documentation/master/std/main.js git add data/releases.json git add content/ git commit -m "CI: update releases and docs" git push origin master