From 9dc96434876334617a658c87f3b0f0451b0f53a7 Mon Sep 17 00:00:00 2001 From: Aneesh Agrawal Date: Wed, 29 Jun 2016 21:43:39 -0400 Subject: [PATCH] Add a script to upload nightly packages to S3 The nightly package name includes the date, and so we use a glob to locate the package file without hard coding a value. However, globbing will not work with our Buildbot steps setup because we perform word splitting ourselves and pass an array to Buildbot, which will directly exec the array instead of passing it to the shell, meaning globbing does not occur. Instead, add a script to the servo repo where we can use globbing, and use `shopt -s failglob` to guard against bad globs. --- etc/ci/upload_nightly.sh | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 etc/ci/upload_nightly.sh diff --git a/etc/ci/upload_nightly.sh b/etc/ci/upload_nightly.sh new file mode 100755 index 00000000000..5c318b47442 --- /dev/null +++ b/etc/ci/upload_nightly.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset +set -o pipefail +shopt -s failglob + + +usage() { + printf "usage: ${0} android|linux|mac|windows\n" +} + + +upload() { + s3cmd put "${2}" "s3://servo-developer-preview/nightly/${1}" +} + + +main() { + if [[ "$#" != 1 ]]; then + usage >&2 + return 1 + fi + + local platform package + platform="${1}" + + if [[ "${platform}" == "android" ]]; then + package=target/arm-linux-androideabi/release/*.apk + elif [[ "${platform}" == "linux" ]]; then + package=target/*.tar.gz + elif [[ "${platform}" == "mac" ]]; then + package=target/*.dmg + elif [[ "${platform}" == "windows" ]]; then + package=target/*.tar.gz + else + usage >&2 + return 1 + fi + + # Lack of quotes on package allows glob expansion + # Note that this is not robust in the case of embedded spaces + # TODO(aneeshusa): make this glob robust using e.g. arrays or Python + upload "${platform}" ${package} +} + +main "$@"