Bug 1411654 - Pre: Update toolchain documents for Android toolchain jobs. r=maliu

MozReview-Commit-ID: 9h0imqIYyaZ

--HG--
extra : rebase_source : 59db336b0fb2e97f3ecc57039d341facd9ada7d6
extra : source : e7b0cc801cf1406a46f576106f014c74a90d9534
This commit is contained in:
Nick Alexander 2017-11-15 13:42:53 -08:00
parent c1ae449401
commit c27ae370b0

View File

@ -70,28 +70,18 @@ redistributed publicly.)
Archiving the Gradle executable is straight-forward, but archiving a
local Maven repository is not. Therefore a special Task Cluster
Docker image and job exist for producing the required archives. The
Docker image definition is rooted in
``taskcluster/docker/android-build``. The Task Cluster job
definition is in
``testing/taskcluster/tasks/builds/android_api_16_gradle_dependencies.yml``.
The job runs in a container based on the custom Docker image and
spawns a Sonatype Nexus proxying Maven repository process in the
background. The job builds Firefox for Android using Gradle and the
in-tree Gradle configuration rooted at ``build.gradle``. The spawned
proxying Maven repository downloads external dependencies and collects
them. After the Gradle build completes, the job archives the Gradle
version used to build, and the downloaded Maven repository, and
exposes them as Task Cluster artifacts.
Here is `an example try job fetching these dependencies
<https://treeherder.mozilla.org/#/jobs?repo=try&revision=75bc98935147&selectedJob=17793653>`_.
The resulting task produced a `Gradle archive
<https://queue.taskcluster.net/v1/task/CeYMgAP3Q-KF8h37nMhJjg/runs/0/artifacts/public%2Fbuild%2Fgradle.tar.xz>`_
and a `Maven repository archive
<https://queue.taskcluster.net/v1/task/CeYMgAP3Q-KF8h37nMhJjg/runs/0/artifacts/public%2Fbuild%2Fjcentral.tar.xz>`_.
These archives were then uploaded (manually) to Mozilla automation
using tooltool for consumption in Gradle builds.
Docker image and toolchain job exist for producing the required
archives. The Docker image definition is rooted in
``taskcluster/docker/android-build``. The Task Cluster toolchain job
is named `android-gradle-dependencies`. The job runs in a container
based on the custom Docker image and spawns a Sonatype Nexus proxying
Maven repository process in the background. The job builds Firefox
for Android using Gradle and the in-tree Gradle configuration rooted
at ``build.gradle``. The spawned proxying Maven repository downloads
external dependencies and collects them. After the Gradle build
completes, the job archives the Gradle version used to build, and the
downloaded Maven repository, and exposes them as Task Cluster
artifacts.
To update the version of Gradle in the archive produced, update
``gradle/wrapper/gradle-wrapper.properties``. Be sure to also update
@ -100,12 +90,18 @@ the SHA256 checksum to prevent poisoning the build machines!
To update the versions of Gradle dependencies used, update
``dependencies`` sections in the in-tree Gradle configuration rooted
at ``build.gradle``. Once you are confident your changes build
locally, push a fresh try build with an invocation like::
locally, push a fresh build to try. The `android-gradle-dependencies`
toolchain should run automatically, fetching your new dependencies and
wiring them into the appropriate try build jobs.
$ hg push-to-try -m "try: -b o -p android-api-16-gradle-dependencies"
To update the version of Sonatype Nexus, update `NEXUS_VERSION` in the
`android-build` Docker image.
Then `upload your archives to tooltool
<https://wiki.mozilla.org/ReleaseEngineering/Applications/Tooltool#How_To_Upload_To_Tooltool>`_,
update the in-tree manifests in
``mobile/android/config/tooltool-manifests``, and push a fresh try
build.
To modify the Sonatype Nexus configuration, typically to proxy a new
remote Maven repository, modify
`taskcluster/scripts/misc/android-gradle-dependencies/nexus.xml`.
There is also a toolchain job that fetches the Android SDK and related
packages. To update the versions of packaged fetched, modify
`python/mozboot/mozboot/android-packages.txt` and update the various
in-tree versions accordingly.