summaryrefslogtreecommitdiffstats
path: root/testing/docker/android-gradle-build/bin
diff options
context:
space:
mode:
Diffstat (limited to 'testing/docker/android-gradle-build/bin')
-rw-r--r--testing/docker/android-gradle-build/bin/after.sh45
-rw-r--r--testing/docker/android-gradle-build/bin/before.sh21
-rw-r--r--testing/docker/android-gradle-build/bin/build.sh29
-rw-r--r--testing/docker/android-gradle-build/bin/checkout-script.sh17
-rw-r--r--testing/docker/android-gradle-build/bin/checkout-sources.sh55
5 files changed, 167 insertions, 0 deletions
diff --git a/testing/docker/android-gradle-build/bin/after.sh b/testing/docker/android-gradle-build/bin/after.sh
new file mode 100644
index 000000000..5fbbfa701
--- /dev/null
+++ b/testing/docker/android-gradle-build/bin/after.sh
@@ -0,0 +1,45 @@
+#!/bin/bash -vex
+
+set -x -e
+
+: WORKSPACE ${WORKSPACE:=/workspace}
+: GRADLE_VERSION ${GRADLE_VERSION:=2.14.1}
+
+set -v
+
+# Package everything up.
+pushd ${WORKSPACE}
+# Not yet. See notes on tooltool below.
+# cp -R /root/.android-sdk android-sdk-linux
+# tar cJf android-sdk-linux.tar.xz android-sdk-linux
+
+cp -R /workspace/nexus/storage/central jcentral
+tar cJf jcentral.tar.xz jcentral
+
+# The Gradle wrapper will have downloaded and verified the hash of exactly one
+# Gradle distribution. It will be located in $GRADLE_USER_HOME, like
+# ~/.gradle/wrapper/dists/gradle-2.7-all/$PROJECT_HASH/gradle-2.7-all.zip. We
+# want to remove the version from the internal directory for use via tooltool in
+# a mozconfig.
+cp $GRADLE_USER_HOME/wrapper/dists/gradle-${GRADLE_VERSION}-all/*/gradle-${GRADLE_VERSION}-all.zip gradle-${GRADLE_VERSION}-all.zip
+unzip -q gradle-${GRADLE_VERSION}-all.zip
+mv gradle-${GRADLE_VERSION} gradle-dist
+tar cJf gradle-dist.tar.xz gradle-dist
+
+mkdir -p /home/worker/artifacts
+# We can't redistribute the Android SDK publicly just yet. We'll
+# upload to (internal) tooltool eventually. mv
+# android-sdk-linux.tar.xz /home/worker/artifacts
+mv jcentral.tar.xz /home/worker/artifacts
+mv gradle-dist.tar.xz /home/worker/artifacts
+popd
+
+# Bug 1245170: at some point in the future, we'll be able to upload
+# things directly to tooltool.
+# pushd /home/worker/artifacts
+# /build/tooltool.py add --visibility=public jcentral.tar.xz
+# /build/tooltool.py add --visibility=public gradle-dist.tar.xz
+# /build/tooltool.py add --visibility=internal android-sdk-linux.tar.xz
+# /build/tooltool.py upload -v --url=http://relengapi/tooltool/ \
+# --message="No message - Gradle and jcentral archives uploaded from taskcluster."
+# popd
diff --git a/testing/docker/android-gradle-build/bin/before.sh b/testing/docker/android-gradle-build/bin/before.sh
new file mode 100644
index 000000000..c8669db01
--- /dev/null
+++ b/testing/docker/android-gradle-build/bin/before.sh
@@ -0,0 +1,21 @@
+#!/bin/bash -vex
+
+set -x -e
+
+: WORKSPACE ${WORKSPACE:=/workspace}
+: GRADLE_VERSION ${GRADLE_VERSION:=2.7}
+
+set -v
+
+# Frowned upon, but simplest.
+RUN_AS_USER=root NEXUS_WORK=${WORKSPACE}/nexus /opt/sonatype/nexus/bin/nexus restart
+
+# Wait "a while" for Nexus to actually start. Don't fail if this fails.
+wget --quiet --retry-connrefused --waitretry=2 --tries=100 \
+ http://localhost:8081/nexus/service/local/status || true
+rm -rf status
+
+# Verify Nexus has actually started. Fail if this fails.
+curl --fail --silent --location http://localhost:8081/nexus/service/local/status | grep '<state>STARTED</state>'
+
+export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
diff --git a/testing/docker/android-gradle-build/bin/build.sh b/testing/docker/android-gradle-build/bin/build.sh
new file mode 100644
index 000000000..797be39f8
--- /dev/null
+++ b/testing/docker/android-gradle-build/bin/build.sh
@@ -0,0 +1,29 @@
+#! /bin/bash -vex
+
+set -x -e -v
+
+# TODO: when bug 1093833 is solved and tasks can run as non-root, reduce this
+# to a simple fail-if-root check
+if [ $(id -u) = 0 ]; then
+ # each of the caches we have mounted are owned by root, so update that ownership
+ # to 'worker'
+ for cache in /home/worker/.tc-vcs /home/worker/workspace /home/worker/tooltool-cache; do
+ if [ -d $cache ]; then
+ # -R probably isn't necessary forever, but it fixes some poisoned
+ # caches for now
+ chown -R worker:worker $cache
+ fi
+ done
+
+ # ..then drop privileges by re-running this script
+ exec su worker /home/worker/bin/build.sh
+fi
+
+####
+# The default build works for any fx_desktop_build based mozharness job:
+# via linux-build.sh
+####
+
+. $HOME/bin/checkout-sources.sh
+
+. $WORKSPACE/build/src/taskcluster/scripts/builder/build-linux.sh
diff --git a/testing/docker/android-gradle-build/bin/checkout-script.sh b/testing/docker/android-gradle-build/bin/checkout-script.sh
new file mode 100644
index 000000000..2bacf3f01
--- /dev/null
+++ b/testing/docker/android-gradle-build/bin/checkout-script.sh
@@ -0,0 +1,17 @@
+#! /bin/bash -vex
+
+set -x -e
+
+# Inputs, with defaults
+
+: GECKO_HEAD_REPOSITORY ${GECKO_HEAD_REPOSITORY:=https://hg.mozilla.org/mozilla-central}
+: GECKO_HEAD_REV ${GECKO_HEAD_REV:=default}
+
+: SCRIPT_DOWNLOAD_PATH ${SCRIPT_DOWNLOAD_PATH:=$PWD}
+: SCRIPT_PATH ${SCRIPT_PATH:?"script path must be set"}
+set -v
+
+# download script from the gecko repository
+url=${GECKO_HEAD_REPOSITORY}/raw-file/${GECKO_HEAD_REV}/${SCRIPT_PATH}
+wget --directory-prefix=${SCRIPT_DOWNLOAD_PATH} $url
+chmod +x `basename ${SCRIPT_PATH}`
diff --git a/testing/docker/android-gradle-build/bin/checkout-sources.sh b/testing/docker/android-gradle-build/bin/checkout-sources.sh
new file mode 100644
index 000000000..ce5d641d1
--- /dev/null
+++ b/testing/docker/android-gradle-build/bin/checkout-sources.sh
@@ -0,0 +1,55 @@
+#! /bin/bash -vex
+
+set -x -e
+
+# Inputs, with defaults
+
+# mozharness builds use three repositories: gecko (source), mozharness (build
+# scripts) and tools (miscellaneous) for each, specify *_REPOSITORY. If the
+# revision is not in the standard repo for the codebase, specify *_BASE_REPO as
+# the canonical repo to clone and *_HEAD_REPO as the repo containing the
+# desired revision. For Mercurial clones, only *_HEAD_REV is required; for Git
+# clones, specify the branch name to fetch as *_HEAD_REF and the desired sha1
+# as *_HEAD_REV.
+
+: GECKO_REPOSITORY ${GECKO_REPOSITORY:=https://hg.mozilla.org/mozilla-central}
+: GECKO_BASE_REPOSITORY ${GECKO_BASE_REPOSITORY:=${GECKO_REPOSITORY}}
+: GECKO_HEAD_REPOSITORY ${GECKO_HEAD_REPOSITORY:=${GECKO_REPOSITORY}}
+: GECKO_HEAD_REV ${GECKO_HEAD_REV:=default}
+: GECKO_HEAD_REF ${GECKO_HEAD_REF:=${GECKO_HEAD_REV}}
+
+: TOOLS_REPOSITORY ${TOOLS_REPOSITORY:=https://hg.mozilla.org/build/tools}
+: TOOLS_BASE_REPOSITORY ${TOOLS_BASE_REPOSITORY:=${TOOLS_REPOSITORY}}
+: TOOLS_HEAD_REPOSITORY ${TOOLS_HEAD_REPOSITORY:=${TOOLS_REPOSITORY}}
+: TOOLS_HEAD_REV ${TOOLS_HEAD_REV:=default}
+: TOOLS_HEAD_REF ${TOOLS_HEAD_REF:=${TOOLS_HEAD_REV}}
+: TOOLS_DISABLE ${TOOLS_DISABLE:=false}
+
+: WORKSPACE ${WORKSPACE:=/home/worker/workspace}
+
+set -v
+
+# check out tools where mozharness expects it to be ($PWD/build/tools and $WORKSPACE/build/tools)
+if [ ! "$TOOLS_DISABLE" = true ]
+then
+ tc-vcs checkout $WORKSPACE/build/tools $TOOLS_BASE_REPOSITORY $TOOLS_HEAD_REPOSITORY $TOOLS_HEAD_REV $TOOLS_HEAD_REF
+
+ if [ ! -d build ]; then
+ mkdir -p build
+ ln -s $WORKSPACE/build/tools build/tools
+ fi
+fi
+
+# TODO - include tools repository in EXTRA_CHECKOUT_REPOSITORIES list
+for extra_repo in $EXTRA_CHECKOUT_REPOSITORIES; do
+ BASE_REPO="${extra_repo}_BASE_REPOSITORY"
+ HEAD_REPO="${extra_repo}_HEAD_REPOSITORY"
+ HEAD_REV="${extra_repo}_HEAD_REV"
+ HEAD_REF="${extra_repo}_HEAD_REF"
+ DEST_DIR="${extra_repo}_DEST_DIR"
+
+ tc-vcs checkout ${!DEST_DIR} ${!BASE_REPO} ${!HEAD_REPO} ${!HEAD_REV} ${!HEAD_REF}
+done
+
+export GECKO_DIR=$WORKSPACE/build/src
+tc-vcs checkout $GECKO_DIR $GECKO_BASE_REPOSITORY $GECKO_HEAD_REPOSITORY $GECKO_HEAD_REV $GECKO_HEAD_REF