1
0
Fork 0

Migrates "raptor" build type to work for chrome-perf-testing, too (#2926)

master
Mitchell Hentges 2019-06-03 16:32:38 +02:00 committed by GitHub
parent d285e799b9
commit 62473e5e86
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 63 additions and 42 deletions

View File

@ -21,7 +21,8 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
testInstrumentationRunnerArguments clearPackageData: 'true'
manifestPlaceholders.isRaptorEnabled = "false"
resValue "bool", "IS_DEBUG", "true"
resValue "bool", "IS_DEBUG", "false"
buildConfigField "boolean", "USE_RELEASE_VERSIONING", "false"
}
def releaseTemplate = {
@ -37,17 +38,19 @@ android {
minifyEnabled false
applicationIdSuffix ".debug"
manifestPlaceholders.isRaptorEnabled = "true"
resValue "bool", "IS_DEBUG", "true"
}
raptor releaseTemplate >> { // the ">>" concatenates the raptor-specific options with the template
forPerformanceTest releaseTemplate >> { // the ">>" concatenates the raptor-specific options with the template
manifestPlaceholders.isRaptorEnabled = "true"
applicationIdSuffix ".raptor"
applicationIdSuffix ".performancetest"
debuggable true
}
nightly releaseTemplate >> {
resValue "bool", "IS_DEBUG", "false"
buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true"
}
beta releaseTemplate >> {
applicationIdSuffix ".beta"
resValue "bool", "IS_DEBUG", "false"
buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true"
}
}
@ -125,10 +128,10 @@ android.applicationVariants.all { variant ->
def buildType = variant.buildType.name
def versionCode = null
def releaseChannels = ["nightly", "beta", "release"]
def isReleased = releaseChannels.contains(buildType)
def isDebug = variant.buildType.resValues['IS_DEBUG']?.value ?: false
def useReleaseVersioning = variant.buildType.buildConfigFields['USE_RELEASE_VERSIONING']?.value ?: false
if (isReleased) {
if (useReleaseVersioning) {
versionCode = generatedVersionCode
// The Google Play Store does not allow multiple APKs for the same app that all have the
@ -171,32 +174,29 @@ android.applicationVariants.all { variant ->
}
println("----------------------------------------------")
println("Variant name: " + variant.name)
println("Build type: " + variant.buildType.name)
println("Flavor: " + variant.flavorName)
println("Version code: " + (versionCode ?: variant.mergedFlavor.versionCode))
println("Variant name: " + variant.name)
println("Build type: " + variant.buildType.name)
println("Flavor: " + variant.flavorName)
println("Version code: " + (versionCode ?: variant.mergedFlavor.versionCode))
println("Telemetry enabled: " + !isDebug)
// -------------------------------------------------------------------------------------------------
// BuildConfig: Set variables for Sentry, Crash Reporting, and Telemetry
// -------------------------------------------------------------------------------------------------
// Reading sentry token from local file (if it exists). In a release task on taskcluster it will be available.
try {
def token = new File("${rootDir}/.sentry_token").text.trim()
buildConfigField 'String', 'SENTRY_TOKEN', '"' + token + '"'
} catch (FileNotFoundException ignored) {
buildConfigField 'String', 'SENTRY_TOKEN', 'null'
}
// Activating crash reporting only if command line parameter was provided (in automation)
if (project.hasProperty("crashReports") && project.property("crashReports") == "true") {
buildConfigField 'String', 'SENTRY_TOKEN', 'null'
if (!isDebug) {
buildConfigField 'boolean', 'CRASH_REPORTING', 'true'
// Reading sentry token from local file (if it exists). In a release task on taskcluster it will be available.
try {
def token = new File("${rootDir}/.sentry_token").text.trim()
buildConfigField 'String', 'SENTRY_TOKEN', '"' + token + '"'
} catch (FileNotFoundException ignored) {}
} else {
buildConfigField 'boolean', 'CRASH_REPORTING', 'false'
}
// Activating telemetry only if command line parameter was provided (in automation)
if (project.hasProperty("telemetry") && project.property("telemetry") == "true") {
if (!isDebug) {
buildConfigField 'boolean', 'TELEMETRY', 'true'
} else {
buildConfigField 'boolean', 'TELEMETRY', 'false'
@ -213,7 +213,7 @@ android.applicationVariants.all { variant ->
print("Adjust token: ")
if (isReleased) {
if (!isDebug) {
try {
def token = new File("${rootDir}/.adjust_token").text.trim()
buildConfigField 'String', 'ADJUST_TOKEN', '"' + token + '"'
@ -249,7 +249,7 @@ android.applicationVariants.all { variant ->
// -------------------------------------------------------------------------------------------------
// Feature build flags
// -------------------------------------------------------------------------------------------------
buildConfigField 'Boolean', 'SEND_TAB_ENABLED', (buildType == "nightly" || !isReleased).toString()
buildConfigField 'Boolean', 'SEND_TAB_ENABLED', (buildType == "nightly" || isDebug).toString()
}
androidExtensions {
@ -395,10 +395,6 @@ dependencies {
releaseImplementation Deps.flipper_noop
}
if (project.hasProperty("raptor")) {
android.defaultConfig.manifestPlaceholders.isRaptorEnabled = "true"
}
// -------------------------------------------------------------------------------------------------
// Task for printing all build variants to build variants in parallel in automation
// -------------------------------------------------------------------------------------------------

View File

@ -5,20 +5,21 @@
package org.mozilla.fenix
enum class ReleaseChannel {
Debug, Nightly, Beta, Release;
Debug, Nightly, Beta, Production;
val isReleased: Boolean
get() = when (this) {
Release, Beta, Nightly -> true
else -> false
Debug -> false
else -> true
}
}
object Config {
val channel = when (BuildConfig.BUILD_TYPE) {
"release" -> ReleaseChannel.Release
"production" -> ReleaseChannel.Production
"beta" -> ReleaseChannel.Beta
"nightly" -> ReleaseChannel.Nightly
else -> ReleaseChannel.Debug
"debug" -> ReleaseChannel.Debug
else -> ReleaseChannel.Production // Performance-test builds should test production behaviour
}
}

View File

@ -89,9 +89,9 @@ def raptor(is_staging):
mozharness_task_id = fetch_mozharness_task_id(geckoview_nightly_version)
gecko_revision = taskcluster.Queue().task(mozharness_task_id)['payload']['env']['GECKO_HEAD_REV']
for variant in [Variant.from_values(abi, False, 'raptor') for abi in ('aarch64', 'arm')]:
for variant in [Variant.from_values(abi, False, 'forPerformanceTest') for abi in ('aarch64', 'arm')]:
assemble_task_id = taskcluster.slugId()
build_tasks[assemble_task_id] = BUILDER.craft_assemble_task(variant)
build_tasks[assemble_task_id] = BUILDER.craft_assemble_raptor_task(variant)
signing_task_id = taskcluster.slugId()
signing_tasks[signing_task_id] = BUILDER.craft_raptor_signing_task(assemble_task_id, variant, is_staging)

View File

@ -77,7 +77,7 @@ class TaskBuilder(object):
capitalized_track = upper_case_first_letter(track)
gradle_commands = (
'./gradlew --no-daemon -PcrashReports=true -Ptelemetry=true -PversionName={} clean test assemble{}'.format(
'./gradlew --no-daemon -PversionName={} clean test assemble{}'.format(
version_name, capitalized_track),
)
@ -111,6 +111,30 @@ class TaskBuilder(object):
},
)
def craft_assemble_raptor_task(self, variant):
command = ' && '.join((
'echo "https://fake@sentry.prod.mozaws.net/368" > .sentry_token',
'echo "--" > .adjust_token',
'echo "-:-" > .leanplum_token',
'./gradlew --no-daemon clean assemble{}'.format(variant.for_gradle_command),
))
return self._craft_build_ish_task(
name='assemble: {}'.format(variant.raw),
description='Building and testing variant {}'.format(variant.raw),
command=command,
artifacts=_craft_artifacts_from_variant(variant),
treeherder={
'groupSymbol': variant.build_type,
'jobKind': 'build',
'machine': {
'platform': variant.platform,
},
'symbol': 'A',
'tier': 1,
},
)
def craft_assemble_task(self, variant):
return self._craft_clean_gradle_task(
name='assemble: {}'.format(variant.raw),
@ -379,13 +403,13 @@ class TaskBuilder(object):
):
staging_prefix = '.staging' if is_staging else ''
routes = [
"index.project.mobile.fenix.v2{}.raptor.{}.{}.{}.latest.{}".format(
"index.project.mobile.fenix.v2{}.performance-test.{}.{}.{}.latest.{}".format(
staging_prefix, self.date.year, self.date.month, self.date.day, variant.abi
),
"index.project.mobile.fenix.v2{}.raptor.{}.{}.{}.revision.{}.{}".format(
"index.project.mobile.fenix.v2{}.performance-test.{}.{}.{}.revision.{}.{}".format(
staging_prefix, self.date.year, self.date.month, self.date.day, self.commit, variant.abi
),
"index.project.mobile.fenix.v2{}.raptor.latest.{}".format(staging_prefix, variant.abi),
"index.project.mobile.fenix.v2{}.performance-test.latest.{}".format(staging_prefix, variant.abi),
]
return self._craft_signing_task(
@ -549,7 +573,7 @@ class TaskBuilder(object):
"--cfg=mozharness/configs/raptor/android_hw_config.py",
"--test={}".format(test_name),
"--app=fenix",
"--binary=org.mozilla.fenix.raptor",
"--binary=org.mozilla.fenix.performancetest",
"--activity=org.mozilla.fenix.browser.BrowserPerformanceTestActivity",
"--download-symbols=ondemand",
]],