Bug 1580778 - Migrate nimbledroid task to taskgraph (#5408)
parent
2869239fec
commit
5a4b7aec00
|
@ -92,9 +92,5 @@ def nightly_to_production_app(builder, is_staging, version_name):
|
||||||
build_task = builder.craft_assemble_release_task(
|
build_task = builder.craft_assemble_release_task(
|
||||||
variant, 'nightly-legacy', is_staging, version_name)
|
variant, 'nightly-legacy', is_staging, version_name)
|
||||||
|
|
||||||
# The signing and push-apk tasks are generated by taskgraph
|
# Nimbledroid, signing and push-apk tasks are generated by taskgraph
|
||||||
tasks = [build_task]
|
return [build_task]
|
||||||
if not is_staging:
|
|
||||||
tasks.append(builder.craft_upload_apk_nimbledroid_task(build_task['label']))
|
|
||||||
|
|
||||||
return tasks
|
|
||||||
|
|
|
@ -228,27 +228,6 @@ class TaskBuilder(object):
|
||||||
treeherder=treeherder,
|
treeherder=treeherder,
|
||||||
)
|
)
|
||||||
|
|
||||||
def craft_upload_apk_nimbledroid_task(self, assemble_task_label):
|
|
||||||
# For GeckoView, upload nightly (it has release config) by default, all Release builds have WV
|
|
||||||
return self._craft_build_ish_task(
|
|
||||||
name="Upload Release APK to Nimbledroid",
|
|
||||||
description='Upload APKs to Nimbledroid for performance measurement and tracking.',
|
|
||||||
command=' && '.join([
|
|
||||||
'curl --location "{}/<build>/artifacts/public/build/armeabi-v7a/geckoNightly/target.apk" > target.apk'.format(_DEFAULT_TASK_URL),
|
|
||||||
'python automation/taskcluster/upload_apk_nimbledroid.py',
|
|
||||||
]),
|
|
||||||
treeherder={
|
|
||||||
'jobKind': 'test',
|
|
||||||
'machine': {
|
|
||||||
'platform': 'android-all',
|
|
||||||
},
|
|
||||||
'symbol': 'compare-locale',
|
|
||||||
'tier': 2,
|
|
||||||
},
|
|
||||||
scopes=["secrets:get:project/mobile/fenix/nimbledroid"],
|
|
||||||
dependencies={'build': assemble_task_label},
|
|
||||||
)
|
|
||||||
|
|
||||||
def craft_detekt_task(self):
|
def craft_detekt_task(self):
|
||||||
return self._craft_clean_gradle_task(
|
return self._craft_clean_gradle_task(
|
||||||
name='detekt',
|
name='detekt',
|
||||||
|
|
|
@ -12,6 +12,7 @@ import requests
|
||||||
import json
|
import json
|
||||||
import urllib2
|
import urllib2
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
url = "https://nimbledroid.com/api/v2/apks"
|
url = "https://nimbledroid.com/api/v2/apks"
|
||||||
|
|
||||||
|
@ -32,15 +33,18 @@ def uploadApk(apk,key):
|
||||||
print json.dumps(response.json(), indent=4)
|
print json.dumps(response.json(), indent=4)
|
||||||
|
|
||||||
|
|
||||||
def uploadNightlyFenixApk(key):
|
def uploadNightlyFenixApk(apk_url, key):
|
||||||
apk_url = 'https://index.taskcluster.net/v1/task/project.mobile.fenix.v2.nightly.latest/artifacts/public/build/armeabi-v7a/geckoNightly/target.apk'
|
|
||||||
apk_data = urllib2.urlopen(apk_url).read()
|
apk_data = urllib2.urlopen(apk_url).read()
|
||||||
with open('./fenix_example_nd.apk', 'wb') as f:
|
with open('./fenix_example_nd.apk', 'wb') as f:
|
||||||
f.write(apk_data)
|
f.write(apk_data)
|
||||||
uploadApk({'apk' : open('fenix_example_nd.apk')},key)
|
uploadApk({'apk' : open('fenix_example_nd.apk')},key)
|
||||||
|
|
||||||
|
|
||||||
# Get JSON data from taskcluster secrets service
|
# Get JSON data from taskcluster secrets service
|
||||||
secrets = taskcluster.Secrets({'baseUrl': 'http://taskcluster/secrets/v1'})
|
secrets = taskcluster.Secrets({
|
||||||
|
'rootUrl': os.environ.get('TASKCLUSTER_PROXY_URL', 'https://taskcluster.net'),
|
||||||
|
})
|
||||||
data = secrets.get('project/mobile/fenix/nimbledroid')
|
data = secrets.get('project/mobile/fenix/nimbledroid')
|
||||||
# upload the nightly build to Nimbledroid
|
# upload the nightly build to Nimbledroid
|
||||||
uploadNightlyFenixApk(data['secret']['api_key'])
|
apk_url = sys.argv[1]
|
||||||
|
uploadNightlyFenixApk(apk_url, data['secret']['api_key'])
|
||||||
|
|
|
@ -26,7 +26,7 @@ workers:
|
||||||
provisioner: aws-provisioner-v1
|
provisioner: aws-provisioner-v1
|
||||||
implementation: docker-worker
|
implementation: docker-worker
|
||||||
os: linux
|
os: linux
|
||||||
worker-type: 'mobile-{level}-b-ref-browser'
|
worker-type: 'mobile-{level}-b-fenix'
|
||||||
images:
|
images:
|
||||||
provisioner: aws-provisioner-v1
|
provisioner: aws-provisioner-v1
|
||||||
implementation: docker-worker
|
implementation: docker-worker
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
---
|
||||||
|
|
||||||
|
loader: taskgraph.loader.transform:loader
|
||||||
|
|
||||||
|
transforms:
|
||||||
|
- taskgraph.transforms.docker_image:transforms
|
||||||
|
- taskgraph.transforms.cached_tasks:transforms
|
||||||
|
- taskgraph.transforms.task:transforms
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
base:
|
||||||
|
symbol: I(base)
|
||||||
|
nimbledroid:
|
||||||
|
parent: base
|
||||||
|
symbol: I(nimbledroid)
|
|
@ -0,0 +1,43 @@
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
---
|
||||||
|
loader: taskgraph.loader.transform:loader
|
||||||
|
|
||||||
|
transforms:
|
||||||
|
- fenix_taskgraph.nimbledroid:transforms
|
||||||
|
- taskgraph.transforms.job:transforms
|
||||||
|
- taskgraph.transforms.task:transforms
|
||||||
|
|
||||||
|
kind-dependencies:
|
||||||
|
- old-decision
|
||||||
|
|
||||||
|
job-defaults:
|
||||||
|
description: Upload APKs to Nimbledroid for performance measurement and tracking
|
||||||
|
worker-type: b-android
|
||||||
|
worker:
|
||||||
|
docker-image: {in-tree: nimbledroid}
|
||||||
|
max-run-time: 600
|
||||||
|
run-on-tasks-for: []
|
||||||
|
treeherder:
|
||||||
|
kind: test
|
||||||
|
tier: 2
|
||||||
|
platform: android-all/opt
|
||||||
|
scopes:
|
||||||
|
- secrets:get:project/mobile/fenix/nimbledroid
|
||||||
|
run:
|
||||||
|
using: run-task
|
||||||
|
use-caches: false
|
||||||
|
command:
|
||||||
|
- python
|
||||||
|
- /builds/worker/checkouts/src/automation/taskcluster/upload_apk_nimbledroid.py
|
||||||
|
- {artifact-reference: "<build/public/build/armeabi-v7a/geckoNightly/target.apk>"}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
nightly:
|
||||||
|
attributes:
|
||||||
|
nightly: true
|
||||||
|
dependencies:
|
||||||
|
build: Build FenixNightlyLegacy task # Comes from the old decision task
|
||||||
|
treeherder:
|
||||||
|
symbol: nimbledroid
|
|
@ -0,0 +1,66 @@
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
FROM ubuntu:18.04
|
||||||
|
|
||||||
|
MAINTAINER Tom Prince "mozilla@hocat.ca"
|
||||||
|
|
||||||
|
# Add worker user
|
||||||
|
RUN mkdir /builds && \
|
||||||
|
useradd -d /builds/worker -s /bin/bash -m worker && \
|
||||||
|
chown worker:worker /builds/worker && \
|
||||||
|
mkdir /builds/worker/artifacts && \
|
||||||
|
chown worker:worker /builds/worker/artifacts
|
||||||
|
|
||||||
|
WORKDIR /builds/worker/
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------------------------------------------------
|
||||||
|
#-- Configuration -----------------------------------------------------------------------------------------------------
|
||||||
|
#----------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
ENV LANG en_US.UTF-8
|
||||||
|
|
||||||
|
# Do not use fancy output on taskcluster
|
||||||
|
ENV TERM dumb
|
||||||
|
|
||||||
|
ENV GRADLE_OPTS -Xmx4096m -Dorg.gradle.daemon=false
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------------------------------------------------
|
||||||
|
#-- System ------------------------------------------------------------------------------------------------------------
|
||||||
|
#----------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
RUN apt-get update -qq \
|
||||||
|
# We need to install tzdata before all of the other packages. Otherwise it will show an interactive dialog that
|
||||||
|
# we cannot navigate while building the Docker image.
|
||||||
|
&& apt-get install -y tzdata \
|
||||||
|
&& apt-get install -y openjdk-8-jdk \
|
||||||
|
wget \
|
||||||
|
expect \
|
||||||
|
git \
|
||||||
|
curl \
|
||||||
|
python \
|
||||||
|
python-pip \
|
||||||
|
python3 \
|
||||||
|
locales \
|
||||||
|
unzip \
|
||||||
|
mercurial \
|
||||||
|
&& apt-get clean
|
||||||
|
|
||||||
|
RUN pip install --upgrade pip
|
||||||
|
|
||||||
|
RUN locale-gen en_US.UTF-8
|
||||||
|
|
||||||
|
# %include-run-task
|
||||||
|
|
||||||
|
ENV SHELL=/bin/bash \
|
||||||
|
HOME=/builds/worker \
|
||||||
|
PATH=/builds/worker/.local/bin:$PATH
|
||||||
|
|
||||||
|
|
||||||
|
VOLUME /builds/worker/checkouts
|
||||||
|
VOLUME /builds/worker/.cache
|
||||||
|
|
||||||
|
|
||||||
|
# run-task expects to run as root
|
||||||
|
USER root
|
|
@ -0,0 +1,6 @@
|
||||||
|
# %ARG DOCKER_IMAGE_PARENT
|
||||||
|
FROM $DOCKER_IMAGE_PARENT
|
||||||
|
|
||||||
|
MAINTAINER Kate Glazko <kglazko@mozilla.com>
|
||||||
|
|
||||||
|
RUN pip install taskcluster requests
|
|
@ -0,0 +1,27 @@
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
"""
|
||||||
|
Apply some defaults and minor modifications to the jobs defined in the nimbledroid
|
||||||
|
kind. This transform won't be necessary anymore once the full tasgraph migration is
|
||||||
|
done
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import absolute_import, print_function, unicode_literals
|
||||||
|
|
||||||
|
import copy
|
||||||
|
import json
|
||||||
|
|
||||||
|
from taskgraph.transforms.base import TransformSequence
|
||||||
|
from taskgraph.util.treeherder import inherit_treeherder_from_dep
|
||||||
|
from taskgraph.util.schema import resolve_keyed_by
|
||||||
|
|
||||||
|
transforms = TransformSequence()
|
||||||
|
|
||||||
|
|
||||||
|
@transforms.add
|
||||||
|
def filter_out_non_nightly_legacy(config, tasks):
|
||||||
|
for dep_task in config.kind_dependencies_tasks:
|
||||||
|
if dep_task.label == 'Build FenixNightlyLegacy task':
|
||||||
|
for task in tasks:
|
||||||
|
yield task
|
Loading…
Reference in New Issue