Bug 1252928 - Part 3: Replace android-gradle-build-dependencies with android-api-15-gradle-dependencies. r=dustin
authorNick Alexander <nalexander@mozilla.com>
Tue, 08 Mar 2016 13:06:59 -0800
changeset 288032 063fb6e87b4eefbd21bc3372328e7f0476de8e6b
parent 288031 022cdd61e207721428e9d5fe07b1ee19aaab48f9
child 288033 b72a92b614bf831dd2ae9ae9807606adaf81efb3
push id73275
push usercbook@mozilla.com
push dateThu, 10 Mar 2016 10:54:53 +0000
treeherdermozilla-inbound@7a0f7bd1873c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdustin
bugs1252928
milestone48.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1252928 - Part 3: Replace android-gradle-build-dependencies with android-api-15-gradle-dependencies. r=dustin The existing task's outcome is best achieved with a special purpose build task, so here it is. MozReview-Commit-ID: 3gYnAb69TdK
build.gradle
mobile/android/config/mozconfigs/android-api-15-gradle-dependencies/nightly
mobile/android/config/tooltool-manifests/android-gradle-dependencies/releng.manifest
testing/mozharness/configs/builds/releng_sub_android_configs/64_api_15_gradle_dependencies.py
testing/mozharness/mozharness/mozilla/building/buildbase.py
testing/taskcluster/tasks/android-gradle-build-dependencies.yml
testing/taskcluster/tasks/branches/base_jobs.yml
testing/taskcluster/tasks/builds/android_api_15_gradle_dependencies.yml
--- a/build.gradle
+++ b/build.gradle
@@ -118,8 +118,22 @@ idea {
         if (!mozconfig.substs.MOZ_INSTALL_TRACKING) {
             excludeDirs += file("${topsrcdir}/mobile/android/thirdparty/com/adjust")
         }
     }
 }
 
 task wrapper(type: Wrapper) {
 }
+
+// From http://jdpgrailsdev.github.io/blog/2014/10/28/gradle_resolve_all_dependencies.html.
+task resolveDependencies {
+    doLast {
+        project.rootProject.allprojects.each { subProject ->
+            subProject.buildscript.configurations.each { configuration ->
+                configuration.resolve()
+            }
+            subProject.configurations.each { configuration ->
+                configuration.resolve()
+            }
+        }
+    }
+}
copy from mobile/android/config/mozconfigs/android-api-15-frontend/nightly
copy to mobile/android/config/mozconfigs/android-api-15-gradle-dependencies/nightly
--- a/mobile/android/config/mozconfigs/android-api-15-frontend/nightly
+++ b/mobile/android/config/mozconfigs/android-api-15-gradle-dependencies/nightly
@@ -6,18 +6,20 @@ MOZ_AUTOMATION_PACKAGE=0
 MOZ_AUTOMATION_PACKAGE_TESTS=0
 MOZ_AUTOMATION_SDK=0
 MOZ_AUTOMATION_UPDATE_PACKAGING=0
 MOZ_AUTOMATION_UPLOAD=0
 MOZ_AUTOMATION_UPLOAD_SYMBOLS=0
 
 . "$topsrcdir/mobile/android/config/mozconfigs/common"
 
-ac_add_options --with-gradle="$topsrcdir/gradle/bin/gradle"
-export GRADLE_MAVEN_REPOSITORY="file://$topsrcdir/jcentral"
+# We want to download Gradle.
+ac_add_options --with-gradle
+# We want to use (and populate!) the local Nexus repository.
+export GRADLE_MAVEN_REPOSITORY="http://localhost:8081/nexus/content/repositories/central/"
 
 ac_add_options --disable-compile-environment
 ac_add_options --disable-tests
 
 # From here on, like ../android-api-15/nightly.
 
 ac_add_options --enable-profiling
 
copy from mobile/android/config/tooltool-manifests/android-frontend/releng.manifest
copy to mobile/android/config/tooltool-manifests/android-gradle-dependencies/releng.manifest
--- a/mobile/android/config/tooltool-manifests/android-frontend/releng.manifest
+++ b/mobile/android/config/tooltool-manifests/android-gradle-dependencies/releng.manifest
@@ -22,36 +22,20 @@
 "filename": "sccache.tar.bz2",
 "unpack": true
 },
 {
 "size": 30899096,
 "visibility": "public",
 "digest": "ac9f5f95d11580d3dbeff87e80a585fe4d324b270dabb91b1165686acab47d99fa6651074ab0be09420239a5d6af38bb2c539506962a7b44e0ed4d080bba2953",
 "algorithm": "sha512",
-"filename": "java_home-1.7.0-openjdk-1.7.0.85.x86_64.tar.xz",
-"unpack": true
-},
-{
-"algorithm": "sha512",
-"visibility": "public",
-"filename": "jcentral.tar.xz",
 "unpack": true,
-"digest": "b5d85a917785e1c034318f7495fef27a6274b04d8640245726b0cf1331b7ac374f5757868901c3fadd930bf10603173a706be653d769dde8ddfdb8673b143363",
-"size": 38596168
+"filename": "java_home-1.7.0-openjdk-1.7.0.85.x86_64.tar.xz"
 },
 {
 "algorithm": "sha512",
 "visibility": "public",
-"filename": "gradle.tar.xz",
+"filename": "dotgradle-online.tar.xz",
 "unpack": true,
-"digest": "ef1d0038da879cc6840fced87671f8f6a18c51375498804f64d21fa48d7089ded4da2be36bd06a1457083e9110e59c0884f1e074dc609d29617c131caea8f234",
-"size": 50542140
-},
-{
-"algorithm": "sha512",
-"visibility": "public",
-"filename": "dotgradle.tar.xz",
-"unpack": true,
-"digest": "9f082ccd71ad18991eb71fcad355c6990f50a72a09ab9b79696521485656083a72faf5a8d4714de9c4b901ee2319b6786a51964846bb7075061642a8505501c2",
+"digest": "0979eb1dcd9349a9c3f51f24747bb6e19e803226d7150fcf6846889ae24a8df925d03edfac038a5330822703c51130d4f5757d9f4caff7bcb2b6f71858c024d3",
 "size": 512
 }
 ]
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_15_gradle_dependencies.py
@@ -0,0 +1,11 @@
+config = {
+    'base_name': 'Android armv7 API 15+ Gradle dependencies %(branch)s',
+    'stage_platform': 'android-api-15-gradle-dependencies',
+    'build_type': 'api-15-opt',
+    'src_mozconfig': 'mobile/android/config/mozconfigs/android-api-15-gradle-dependencies/nightly',
+    'tooltool_manifest_src': 'mobile/android/config/tooltool-manifests/android-gradle-dependencies/releng.manifest',
+    'multi_locale_config_platform': 'android',
+    'postflight_build_mach_commands': [
+        ['gradle', 'resolveDependencies'],
+    ],
+}
--- a/testing/mozharness/mozharness/mozilla/building/buildbase.py
+++ b/testing/mozharness/mozharness/mozilla/building/buildbase.py
@@ -353,16 +353,17 @@ class BuildOptionParser(object):
         'mulet': 'builds/releng_sub_%s_configs/%s_mulet.py',
         'code-coverage': 'builds/releng_sub_%s_configs/%s_code_coverage.py',
         'graphene': 'builds/releng_sub_%s_configs/%s_graphene.py',
         'horizon': 'builds/releng_sub_%s_configs/%s_horizon.py',
         'source': 'builds/releng_sub_%s_configs/%s_source.py',
         'api-9': 'builds/releng_sub_%s_configs/%s_api_9.py',
         'api-11': 'builds/releng_sub_%s_configs/%s_api_11.py',
         'api-15-frontend': 'builds/releng_sub_%s_configs/%s_api_15_frontend.py',
+        'api-15-gradle-dependencies': 'builds/releng_sub_%s_configs/%s_api_15_gradle_dependencies.py',
         'api-15': 'builds/releng_sub_%s_configs/%s_api_15.py',
         'api-9-debug': 'builds/releng_sub_%s_configs/%s_api_9_debug.py',
         'api-11-debug': 'builds/releng_sub_%s_configs/%s_api_11_debug.py',
         'api-15-debug': 'builds/releng_sub_%s_configs/%s_api_15_debug.py',
         'x86': 'builds/releng_sub_%s_configs/%s_x86.py',
         'api-11-partner-sample1': 'builds/releng_sub_%s_configs/%s_api_11_partner_sample1.py',
         'api-15-partner-sample1': 'builds/releng_sub_%s_configs/%s_api_15_partner_sample1.py',
         'api-11-b2gdroid': 'builds/releng_sub_%s_configs/%s_api_11_b2gdroid.py',
deleted file mode 100644
--- a/testing/taskcluster/tasks/android-gradle-build-dependencies.yml
+++ /dev/null
@@ -1,76 +0,0 @@
-# A task to fetch Android Gradle dependencies from jcentral and package them
-# for consumption by tooltool users.  Normally invoked manually.
----
-taskId: {{build_slugid}}
-
-task:
-  created: '{{now}}'
-  deadline: '{{#from_now}}24 hours{{/from_now}}'
-  metadata:
-    name: '[TC] - Android Gradle build dependencies'
-    description: 'Fetch and package Android Gradle build dependencies'
-    owner: nalexander@mozilla.com
-    source: http://todo.com/soon
-
-  tags:
-    createdForUser: {{owner}}
-
-  workerType: b2gtest
-  provisionerId: aws-provisioner-v1
-  schedulerId: task-graph-scheduler
-
-  routes:
-    - 'index.gecko.v1.{{project}}.revision.linux.{{head_rev}}.{{build_name}}.{{build_type}}'
-    - 'index.gecko.v1.{{project}}.latest.linux.{{build_name}}.{{build_type}}'
-
-  scopes:
-    - 'docker-worker:cache:level-{{level}}-{{project}}-tc-vcs'
-
-  payload:
-    image:
-      type: 'task-image'
-      path: 'public/image.tar'
-      taskId: '{{#task_id_for_image}}android-gradle-build{{/task_id_for_image}}'
-
-    command:
-      - bash
-      - /build/build.sh
-
-    maxRunTime: 1800
-
-    cache:
-      level-{{level}}-{{project}}-tc-vcs: '/home/worker/.tc-vcs'
-
-    artifacts:
-      'public/build':
-        type: directory
-        path: '/artifacts/'
-        expires: '{{#from_now}}1 year{{/from_now}}'
-
-    env:
-      # Common environment variables for checking out gecko
-      GECKO_BASE_REPOSITORY: '{{base_repository}}'
-      GECKO_HEAD_REPOSITORY: '{{head_repository}}'
-      GECKO_HEAD_REV: '{{head_rev}}'
-      GECKO_HEAD_REF: '{{head_ref}}'
-      TOOLTOOL_REPO: 'https://git.mozilla.org/build/tooltool.git'
-      TOOLTOOL_REV: 'master'
-      MOZ_BUILD_DATE: '{{pushdate}}'
-
-  extra:
-    build_product: '{{build_product}}'
-    build_name: '{{build_name}}'
-    build_type: '{{build_type}}'
-    index:
-      rank: {{pushlog_id}}
-    locations:
-        build: null
-        tests: null
-    treeherder:
-        machine:
-            platform: lint
-        groupSymbol: tc
-        symbol: AG
-    treeherderEnv:
-        - production
-        - staging
--- a/testing/taskcluster/tasks/branches/base_jobs.yml
+++ b/testing/taskcluster/tasks/branches/base_jobs.yml
@@ -346,8 +346,14 @@ tasks:
         - '**/*.xml'
         # Run when eslint policies change.
         - '**/.eslintignore'
         - '**/*eslintrc*'
         # The plugin implementing custom checks.
         - 'testing/eslint-plugin-mozilla/**'
         # Other misc lint related files.
         - 'tools/lint/**'
+  android-api-15-gradle-dependencies:
+    task: tasks/builds/android_api_15_gradle_dependencies.yml
+    root: true
+    when:
+      file_patterns:
+        - 'testing/docker/android-gradle-build/**'
new file mode 100644
--- /dev/null
+++ b/testing/taskcluster/tasks/builds/android_api_15_gradle_dependencies.yml
@@ -0,0 +1,80 @@
+# A build-like task to fetch Android Gradle dependencies from jcentral and
+# package them for consumption by tooltool users.  Normally invoked manually.
+
+$inherits:
+  from: 'tasks/builds/mobile_base.yml'
+  variables:
+    build_name: 'android-api-15-gradle-dependencies'
+    build_type: 'opt'
+task:
+  metadata:
+      name: '[TC] Android armv7 API 15+ gradle dependencies'
+      description: 'Android armv7 API 15+ gradle dependencies'
+
+  workerType: android-api-15
+
+  routes:
+    - 'index.buildbot.branches.{{project}}.android-api-15-gradle-dependencies'
+    - 'index.buildbot.revisions.{{head_rev}}.{{project}}.android-api-15-gradle-dependencies'
+
+  scopes:
+    - 'docker-worker:cache:level-{{level}}-{{project}}-build-android-api-15-gradle-dependencies-workspace'
+    - 'docker-worker:cache:tooltool-cache'
+    - 'docker-worker:relengapi-proxy:tooltool.download.internal'
+    - 'docker-worker:relengapi-proxy:tooltool.download.public'
+
+  payload:
+    cache:
+      level-{{level}}-{{project}}-build-android-api-15-gradle-dependencies-workspace: '/home/worker/workspace'
+      tooltool-cache: '/home/worker/tooltool-cache'
+
+    features:
+      relengAPIProxy: true
+
+    env:
+      # inputs to mozharness
+      MOZHARNESS_SCRIPT: 'mozharness/scripts/fx_desktop_build.py'
+      # TODO: make these additional configuration files go away
+      MOZHARNESS_CONFIG: >
+          builds/releng_base_android_64_builds.py
+          disable_signing.py
+          platform_supports_post_upload_to_latest.py
+      MH_CUSTOM_BUILD_VARIANT_CFG: api-15-gradle-dependencies
+      MH_BRANCH: {{project}}
+      MH_BUILD_POOL: taskcluster
+      GRADLE_USER_HOME: '/home/worker/workspace/build/src/dotgradle-online'
+
+    maxRunTime: 36000
+
+    image:
+      type: 'task-image'
+      path: 'public/image.tar'
+      taskId: '{{#task_id_for_image}}android-gradle-build{{/task_id_for_image}}'
+
+    command:
+      - /bin/bash
+      - -c
+      - >
+        /home/worker/bin/before.sh &&
+        /home/worker/bin/build.sh &&
+        /home/worker/bin/after.sh &&
+        true
+
+  extra:
+    treeherderEnv:
+      - production
+      - staging
+    treeherder:
+      machine:
+        # see https://github.com/mozilla/treeherder/blob/master/ui/js/values.js
+        platform: android-4-0-armv7-api15
+      groupSymbol: tc
+      groupName: Submitted by taskcluster
+      symbol: Deps
+      tier: 2
+    # Rather then enforcing particular conventions we require that all build
+    # tasks provide the "build" extra field to specify where the build and tests
+    # files are located.
+    locations:
+      build: 'public/build/target.linux-x86_64.tar.bz2'
+      tests: 'public/build/target.tests.zip'