fenix/.taskcluster.yml
Sebastian Kaspari 0bffc071b6 Closes #698: Create product flavors for Fennec transition.
* greenfield (pure Fenix without anything added)
* firefoxNightly (To replace Firefox Nightly)
* firefoxBeta (To replace Firefox Beta)
* firefoxRelease (To replace Firefox Release)

For now it will be a bit annoying to have all those flavors. But once the transition has been
successfully completed we can start to tear them down again.

Once GeckoView universal builds are available we can get rid of the "abi" dimension.

If this is going to slow down the CI process then I might look into parallelizing the build
or potentially introducing a taskcluster CI setup (if that makes sense).
2019-02-27 13:02:44 -06:00

117 lines
5.1 KiB
YAML

# 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/.
version: 1
policy:
pullRequests: public
tasks:
- $if: 'tasks_for == "cron"'
then:
$let:
decision_task_id: {$eval: as_slugid("decision_task")}
expires_in: {$fromNow: '1 year'}
repository: ${event.repository.html_url}
scheduler_id: focus-nightly-sched
head_rev: ${event.release.tag_name}
head_branch: ${event.release.target_commitish}
is_mozilla_mobile_repo:
$eval: event.repository.html_url == 'https://github.com/mozilla-mobile/fenix'
track:
$if: event.repository.html_url == 'https://github.com/mozilla-mobile/fenix'
then: 'nightly'
else: 'staging-nightly'
decision_worker_type:
$if: event.repository.html_url == 'https://github.com/mozilla-mobile/fenix'
then: mobile-3-decision
else: mobile-1-decision
build_worker_type:
$if: event.repository.html_url == 'https://github.com/mozilla-mobile/fenix'
then: mobile-3-b-fenix
else: mobile-1-b-fenix
in:
taskId: ${decision_task_id}
taskGroupId: ${decision_task_id} # Must be explicit because of Chain of Trust
created: {$fromNow: ''}
deadline: {$fromNow: '2 hours'}
expires: ${expires_in}
schedulerId: ${scheduler_id} # Must be explicit because of Chain of Trust
provisionerId: aws-provisioner-v1
workerType: ${decision_worker_type}
requires: all-completed # Must be explicit because of Chain of Trust
priority: medium
retries: 5
scopes:
$flatten:
- queue:scheduler-id:${scheduler_id}
- queue:create-task:highest:aws-provisioner-v1/${build_worker_type}
- project:mobile:fenix:releng:signing:format:autograph_apk
- $if: is_mozilla_mobile_repo
then:
- queue:create-task:highest:scriptworker-prov-v1/mobile-signing-v1
- queue:create-task:highest:scriptworker-prov-v1/mobile-pushapk-v1
- project:mobile:fenix:releng:signing:cert:release-signing
- project:mobile:fenix:releng:googleplay:product:fenix
- queue:route:index.project.mobile.fenix.signed-nightly.*
- secrets:get:project/mobile/fenix/sentry
else:
- queue:create-task:highest:scriptworker-prov-v1/mobile-signing-dep-v1
- queue:create-task:highest:scriptworker-prov-v1/mobile-pushapk-dep-v1
- project:mobile:fenix:releng:signing:cert:dep-signing
- project:mobile:fenix:releng:googleplay:product:fenix:dep
- queue:route:index.project.mobile.fenix.staging-signed-nightly.*
- secrets:get:garbage/staging/project/mobile/fenix/sentry
payload:
maxRunTime: 600 # Decision should remain fast enough to schedule a handful of tasks
image: mozillamobile/fenix:1.3
features:
taskclusterProxy: true
chainOfTrust: true
env:
BUILD_WORKER_TYPE: ${build_worker_type}
MOBILE_HEAD_BRANCH: ${head_branch}
MOBILE_HEAD_REPOSITORY: ${repository}
MOBILE_HEAD_REV: ${head_rev}
MOBILE_TRIGGERED_BY: ${event.sender.login}
SCHEDULER_ID: ${scheduler_id}
TASK_ID: ${decision_task_id}
command:
- /bin/bash
- --login
- -cx
- >-
git fetch ${repository} ${head_branch}
&& git config advice.detachedHead false
&& git checkout ${head_rev}
&& python automation/taskcluster/decision_task_nightly.py \
--track ${track} \
--commit \
--output /opt/fenix/app/build/outputs/apk \
--apk armGreenfield/release/app-arm-greenfield-release-unsigned.apk \
--apk x86Greenfield/release/app-x86-greenfield-release-unsigned.apk \
--apk aarch64Greenfield/release/app-aarch64-greenfield-release-unsigned.apk \
--date ${now}
artifacts:
public/task-graph.json:
type: file
path: /opt/fenix/task-graph.json
expires: ${expires_in}
public/actions.json:
type: file
path: /opt/fenix/actions.json
expires: ${expires_in}
public/parameters.yml:
type: file
path: /opt/fenix/parameters.yml
expires: ${expires_in}
extra:
cron: {$json: {$eval: 'cron'}}
tasks_for: ${tasks_for}
metadata:
name: Fenix Nightly Decision Task
description: Decision task scheduled by cron task [${cron.task_id}](https://tools.taskcluster.net/tasks/${cron.task_id})
owner: ${event.sender.login}@users.noreply.github.com
source: ${repository}/raw/${head_rev}/.taskcluster.yml