Bug 1390123 - Snap: Automate uploads to Ubuntu Store (edge channel) r=mtabara
MozReview-Commit-ID: 7JVwiUaxk0G
new file mode 100644
--- /dev/null
+++ b/taskcluster/docker/firefox-snap/fetch_macaroons.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+url=$1
+config=~/.snapcraft/snapcraft.cfg
+
+mkdir -p ~/.snapcraft
+curl -s $url | \
+ python -c 'import json, sys; a = json.load(sys.stdin); print a["secret"]["content"]' | \
+ base64 -d > \
+ $config
+chmod 600 $config
--- a/taskcluster/docker/firefox-snap/runme.sh
+++ b/taskcluster/docker/firefox-snap/runme.sh
@@ -1,23 +1,25 @@
-#!/bin/sh
+#!/bin/bash
set -xe
# Required env variables
test $VERSION
test $BUILD_NUMBER
test $CANDIDATES_DIR
# Optional env variables
: WORKSPACE ${WORKSPACE:=/home/worker/workspace}
: ARTIFACTS_DIR ${ARTIFACTS_DIR:=/home/worker/artifacts}
+SCRIPT_DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
TARGET="firefox-${VERSION}.snap"
+TARGET_FULL_PATH="$ARTIFACTS_DIR/$TARGET"
mkdir -p "$ARTIFACTS_DIR"
rm -rf "${WORKSPACE}/source" && mkdir -p "${WORKSPACE}/source/opt" "${WORKSPACE}/source/usr/bin"
CURL="curl --location --retry 10 --retry-delay 10"
# Download and extract en-US linux64 binary
$CURL -o "${WORKSPACE}/firefox.tar.bz2" \
@@ -39,28 +41,41 @@ done
# Symlink firefox binary to /usr/bin to make it available in PATH
ln -s ../../opt/firefox/firefox "${WORKSPACE}/source/usr/bin"
# Generate snapcraft manifest
sed -e "s/@VERSION@/${VERSION}/g" -e "s/@BUILD_NUMBER@/${BUILD_NUMBER}/g" snapcraft.yaml.in > ${WORKSPACE}/snapcraft.yaml
cd ${WORKSPACE}
snapcraft
-mv *.snap "$ARTIFACTS_DIR/$TARGET"
+mv *.snap "$TARGET_FULL_PATH"
cd $ARTIFACTS_DIR
# Generate checksums file
-size=$(stat --printf="%s" $ARTIFACTS_DIR/$TARGET)
-sha=$(sha512sum $ARTIFACTS_DIR/$TARGET | awk '{print $1}')
+size=$(stat --printf="%s" "$TARGET_FULL_PATH")
+sha=$(sha512sum "$TARGET_FULL_PATH" | awk '{print $1}')
echo "$sha sha512 $size $TARGET" > $TARGET.checksums
echo "Generating signing manifest"
hash=$(sha512sum $TARGET.checksums | awk '{print $1}')
cat << EOF > signing_manifest.json
[{"file_to_sign": "$TARGET.checksums", "hash": "$hash"}]
EOF
# For posterity
find . -ls
cat $TARGET.checksums
cat signing_manifest.json
+
+
+# Upload Beta snaps to Ubuntu Snap Store (edge, aka testing channel)
+# TODO: Parametrize "edge" channel
+# TODO: Don't filter out non-beta releases
+# TODO: Make this part an independent task
+if [[ $VERSION =~ ^[0-9]+\.0b[0-9]+$ ]]; then
+ echo "Beta version detected. Uploading to Ubuntu Store (edge channel)..."
+ bash "$SCRIPT_DIRECTORY/fetch_macaroons.sh" 'http://taskcluster/secrets/v1/secret/project/releng/snapcraft/firefox/edge'
+ snapcraft push "$TARGET_FULL_PATH" --release 'edge'
+else
+ echo "Non-beta version detected. Nothing else to do."
+fi