Commit Graph

8670 Commits

Author SHA1 Message Date
Andrew Halberstadt
3c28444d2d Bug 1660506 - Move backstop determination to the decision task and store it in a parameter, r=marco,taskgraph-reviewers,jmaher
We want to be able to retroactively tell whether a push was a backstop or not.
This patch stores whether or not a push was a "backstop" directly in the
parameters. The optimization strategy now simply returns 'not
params["backstop"]'.

For simplicity, I'm not counting the 'optimized-backstop' as a backstop. It's
unclear if we'll want to be able to detect these types of the pushes in the
future or not, but we can cross that bridge when we get there.

Differential Revision: https://phabricator.services.mozilla.com/D88151
2020-08-26 21:56:05 +00:00
Andrew Halberstadt
0def0cc961 Bug 1660506 - Drop the 'remove_on_projects' feature from the Backstop optimization, r=marco
In the past, the 'backstop' optimization was applied to tasks by default across
all projects, even though it only really made sense on autoland. To choose what
would happen on non-autoland branches, we invented this 'remove_on_projects'
concept.

These days, we only apply the backstop optimization in the first place for
autoland. So 'remove_on_projects' is no longer necessary.

Depends on D88149

Differential Revision: https://phabricator.services.mozilla.com/D88150
2020-08-26 19:11:22 +00:00
Andrew Halberstadt
81eecf7f8c Bug 1660506 - Simplify the backstop optimizations, r=marco
This patch cleans up some of the backstop strategy names. Specifically:

1. Rename 'full-backstop' -> 'backstop'. The old 'backstop' algorithm was
unused anyway, so there is no conflict. It is also just defined directly in
the decorator rather than using 'Alias'.

So now rather than 'full-backstop' and 'optimized-backstop', it's just
'backstop' and 'optimized-backstop'.


2. Remove 'backstop-X-hours-Y-minutes' strategies, and replace them with
the corresponding 'push-interval-X' strategy.

This means we lose the time component in the 'optimized-backstop'. But it isn't
a problem, because we shouldn't be using a time component there at all anyway
(we should just use it with the 'backstop').

Differential Revision: https://phabricator.services.mozilla.com/D88149
2020-08-26 21:40:05 +00:00
Mike Hommey
9071c354c3 Bug 1661659 - Reimplement optionally_keyed_by as a validator function rather than in terms of nested Any. r=taskgraph-reviewers,ahal
Using nested Any generates deeply nested non-trivial schemas because we
also end up nesting optionally_keyed_by's, and the addition of one field
in one optionally_keyed_by in bug 1657769 made the whole schema
compilation step an order of magnitude slower.

Even before bug 1657769, the schema compilation step was slow for tests,
and with this change, it's virtually instantaneous.

Differential Revision: https://phabricator.services.mozilla.com/D88543
2020-08-28 12:47:19 +00:00
Andrew Halberstadt
629b7f62ad Bug 1650406 - [ci] Use 'if-dependencies' with upload-symbols tasks r=bhearsum
Differential Revision: https://phabricator.services.mozilla.com/D87777
2020-08-27 20:50:32 +00:00
Andrew Halberstadt
eaeb3565d0 Bug 1659187 - [ci] Use 'if-dependencies' for build-signing and repackage tasks r=bhearsum
Differential Revision: https://phabricator.services.mozilla.com/D87775
2020-08-27 20:45:00 +00:00
Andrew Halberstadt
e07398454b Bug 1659187 - [taskgraph] Implement a mechanism to only run tasks when a specified dependency is present, r=bhearsum
Certain tasks are meant to perform follow-up work to another task. For example,
a 'signing' task signs an artifact from a dependency task. An 'upload-symbols'
tasks uploads an artifact from a dependency task.

In general, we only want to run these types of tasks when the dependency task
is running. But in practice, these tasks often cause the dependency to get
pulled in.

We've tried to fix this in the past by making the 'run-on-projects' and
'optimization' keys match their primary dependency. But it's very easy to
mess this up, and some optimizations (like bugbug) take the content of the
task definition into account. So even if both tasks use the same optimization,
they could have different results.

This revision adds a new 'if-dependencies' key that denotes a task that should
only run if one of the dependencies specified in this list is also run. It
will allow us to stop playing whack-a-mole when trying to make sure tasks
aren't being pulled in solely due to these types of dependencies.

This feature is implemented independently of the 'optimization', so tasks that
specify this can still be optimized even if their primary dependency does run.

Differential Revision: https://phabricator.services.mozilla.com/D80508
2020-08-27 20:45:33 +00:00
Andrew Halberstadt
18cca882f7 Bug 1659187 - [taskgraph.test] Automatically set dependencies based on edges in test_optimize.py, r=taskgraph-reviewers,bhearsum
Edges are defined as a (left, right, name) tuple, which means task left depends on task right using an edge called name. Previously the optimization code never took dependencies into account, so the mock graph generator never bothered to create them. But in the child revision, we start using these values, so the generation should set it up appropriately.

I had to make it conditional due to the way the assertions in the test_get_subgraph test are set up. I figured it was easier to do that than to re-write the assertions.

Depends on D88483

Differential Revision: https://phabricator.services.mozilla.com/D88484
2020-08-28 12:28:04 +00:00
Andrew Halberstadt
59d997abe4 Bug 1659187 - [taskgraph.test] Convert test_optimize.py to the pytest format and use parametrization, r=taskgraph-reviewers,aki
This removes boiler plate around adding new test cases.

Depends on D88482

Differential Revision: https://phabricator.services.mozilla.com/D88483
2020-08-27 21:36:14 +00:00
Andrew Halberstadt
b84d7787f5 Bug 1659187 - [taskgraph.test] Ensure logs are displayed when a test fails, r=taskgraph-reviewers,aki
Differential Revision: https://phabricator.services.mozilla.com/D88482
2020-08-27 21:32:32 +00:00
Mike Hommey
2df59e529f Bug 1661589 - Track decision task duration on perfherder. r=jmaher
Differential Revision: https://phabricator.services.mozilla.com/D88495
2020-08-28 10:45:23 +00:00
David Major
587cfc4989 Bug 1660340 - Switch builds to clang 11.0.0 rc2 r=froydnj
This changes most of our automation builds to clang 11.0.0 rc2.

Not included:
* code coverage builds, per bug 1660341
* mingw builds, which have traditionally been on their own update cadence, and in this case are blocked anyway by bug 1658632

This will leave some unused clang-9 task definitions. I intend to clean them up, but at a later date. For now I want to focus on making sure this update sticks, since patches like this have a tendency to bounce.

Differential Revision: https://phabricator.services.mozilla.com/D88313
2020-08-27 16:26:23 +00:00
Razvan Maries
cd42d16e28 Backed out 3 changesets (bug 1660340, bug 1641674, bug 1660896) for browser time time outs. CLOSED TREE
Backed out changeset edb1d37f48f4 (bug 1660340)
Backed out changeset 9c8388c30032 (bug 1660896)
Backed out changeset 9bf1c5e44a13 (bug 1641674)
2020-08-28 11:44:25 +03:00
Mike Hommey
9c50aac4ea Bug 1660964 - Upgrade skopeo to 1.1.1 and kaniko to 1.0.0. r=aki
Differential Revision: https://phabricator.services.mozilla.com/D88116
2020-08-26 04:53:42 +00:00
Nick Thomas
ffceb1c957 Bug 1653476 - import partner repack script into tree and convert to py3, r=aki
Differential Revision: https://phabricator.services.mozilla.com/D88374
2020-08-27 22:19:32 +00:00
Nick Thomas
718f929f20 Bug 1630809 - generate beetmover tasks for partner attribution r=aki
This is a fork of the release-partner-repack-beetmover kind and transform. It's modified to cope with having one upstream task with many partner builds, rather than a many beetmover tasks dealing with a single config-platform-locale combination.

Differential Revision: https://phabricator.services.mozilla.com/D87730
2020-08-27 22:19:34 +00:00
Nick Thomas
e9938dc1de Bug 1630809 - generate partner attribution task r=aki
A single task is created to do all partner attributions. The partner_attribution transform processes the configuration into an environment variable for the tools/attribution/attribute.py script to use. This is quite verbose so a large number of configurations may cause problems.

Applies the same priority modification to attribution tasks as to partner repacks, to not impede the main part of the graph.

Differential Revision: https://phabricator.services.mozilla.com/D87729
2020-08-27 22:19:36 +00:00
Nick Thomas
c51ceb7354 Bug 1630809 - read attribution configuration from github r=aki
The partner attribution config is stored in the same repository as the repo manifest for partner repacks, but all in attribution_config.yml instead of default.xml. This extends the existing support for using the Github API to read files to retrieve and process the attribution config.

Differential Revision: https://phabricator.services.mozilla.com/D87728
2020-08-27 22:19:39 +00:00
Nick Thomas
5d6881468d Bug 1630809 - add initial support for partner attribution in release promotion r=aki
Renames the release_enable_partners parameter to release_enable_partner_repack, and adds release_enable_partner_attribution for attribution. This it to provide support for disabling them independently in main releases, and in respins.
Adds docs for attribution, update docs for repacks.
Hardwire values for the enable params for the respin flavors, other wise read from the input (defaulting to on in promotion, off otherwise).
Fixes up the rebuild-kinds for partner repacks so that they reflect the current set, although the top level may be all that is needed.

Differential Revision: https://phabricator.services.mozilla.com/D87727
2020-08-27 22:19:41 +00:00
Nick Thomas
30281b78b1 Bug 1630809 - check_if_partners_enabled() is only needed on the top kind for each partner branch r=aki
If the partner repack task are already removed then there can be no downstreams to disable.

Differential Revision: https://phabricator.services.mozilla.com/D87726
2020-08-27 22:19:43 +00:00
Nick Thomas
0c309d25d1 Bug 1630809 - when downloading artifacts using fetch-content, optionally verify hash using chain-of-trust.json r=aki
This improves the integrity of downloads of upstream artifacts when using fetch-content. If `verify-hash: True` is set on the fetch config, then the chain-of-trust.json of the upstream is used to retieve the expected sha256 of the artifact, and this is checked.

Differential Revision: https://phabricator.services.mozilla.com/D87725
2020-08-27 22:19:46 +00:00
Nick Thomas
68740debe6 Bug 1630809 - only generate release-partner-repack tasks for enabled platforms r=aki
Prior to this patch the task graph would always include a release-partner-repack-<platform> task for all 6 platforms, regardless of what was specified in release_partner_config. This was particularly obvious in the off-cycle respin scenario when a single partner is repacked. By moving and reusing get_repack_ids_by_platform() it's easy to skip unneeded platforms.

Differential Revision: https://phabricator.services.mozilla.com/D87724
2020-08-27 22:19:48 +00:00
Nick Thomas
aaa9dbde9d Bug 1630809 - python3 compatibility for off-cycle partner respins, typo fixes r=aki
Differential Revision: https://phabricator.services.mozilla.com/D87723
2020-08-27 22:19:30 +00:00
Butkovits Atila
b8629b8d1e Backed out 9 changesets (bug 1630809, bug 1653476) for Gecko Decision failures. CLOSED TREE
Backed out changeset 02a27bfc76dd (bug 1653476)
Backed out changeset afb5df61943a (bug 1630809)
Backed out changeset 04628c1f98e9 (bug 1630809)
Backed out changeset 4b4d50e0b1bf (bug 1630809)
Backed out changeset 2fa2deb5c993 (bug 1630809)
Backed out changeset d6652114cac3 (bug 1630809)
Backed out changeset ad5e4caa3291 (bug 1630809)
Backed out changeset d3d841cd14f3 (bug 1630809)
Backed out changeset b3746502e227 (bug 1630809)
2020-08-28 01:15:03 +03:00
Nick Thomas
9c0467f88b Bug 1653476 - import partner repack script into tree and convert to py3, r=aki
Differential Revision: https://phabricator.services.mozilla.com/D88374
2020-08-27 14:56:47 +00:00
Nick Thomas
df0eba30f9 Bug 1630809 - generate beetmover tasks for partner attribution r=aki
This is a fork of the release-partner-repack-beetmover kind and transform. It's modified to cope with having one upstream task with many partner builds, rather than a many beetmover tasks dealing with a single config-platform-locale combination.

Differential Revision: https://phabricator.services.mozilla.com/D87730
2020-08-27 05:30:40 +00:00
Nick Thomas
c5e9d12304 Bug 1630809 - generate partner attribution task r=aki
A single task is created to do all partner attributions. The partner_attribution transform processes the configuration into an environment variable for the tools/attribution/attribute.py script to use. This is quite verbose so a large number of configurations may cause problems.

Applies the same priority modification to attribution tasks as to partner repacks, to not impede the main part of the graph.

Differential Revision: https://phabricator.services.mozilla.com/D87729
2020-08-27 05:46:51 +00:00
Nick Thomas
6130e5258f Bug 1630809 - read attribution configuration from github r=aki
The partner attribution config is stored in the same repository as the repo manifest for partner repacks, but all in attribution_config.yml instead of default.xml. This extends the existing support for using the Github API to read files to retrieve and process the attribution config.

Differential Revision: https://phabricator.services.mozilla.com/D87728
2020-08-27 05:29:18 +00:00
Nick Thomas
ba595e786b Bug 1630809 - add initial support for partner attribution in release promotion r=aki
Renames the release_enable_partners parameter to release_enable_partner_repack, and adds release_enable_partner_attribution for attribution. This it to provide support for disabling them independently in main releases, and in respins.
Adds docs for attribution, update docs for repacks.
Hardwire values for the enable params for the respin flavors, other wise read from the input (defaulting to on in promotion, off otherwise).
Fixes up the rebuild-kinds for partner repacks so that they reflect the current set, although the top level may be all that is needed.

Differential Revision: https://phabricator.services.mozilla.com/D87727
2020-08-27 05:28:53 +00:00
Nick Thomas
f0a5c5a65b Bug 1630809 - check_if_partners_enabled() is only needed on the top kind for each partner branch r=aki
If the partner repack task are already removed then there can be no downstreams to disable.

Differential Revision: https://phabricator.services.mozilla.com/D87726
2020-08-27 05:28:09 +00:00
Nick Thomas
a2c4b8f1ea Bug 1630809 - when downloading artifacts using fetch-content, optionally verify hash using chain-of-trust.json r=aki
This improves the integrity of downloads of upstream artifacts when using fetch-content. If `verify-hash: True` is set on the fetch config, then the chain-of-trust.json of the upstream is used to retieve the expected sha256 of the artifact, and this is checked.

Differential Revision: https://phabricator.services.mozilla.com/D87725
2020-08-27 05:28:00 +00:00
Nick Thomas
e1d61c2ad2 Bug 1630809 - only generate release-partner-repack tasks for enabled platforms r=aki
Prior to this patch the task graph would always include a release-partner-repack-<platform> task for all 6 platforms, regardless of what was specified in release_partner_config. This was particularly obvious in the off-cycle respin scenario when a single partner is repacked. By moving and reusing get_repack_ids_by_platform() it's easy to skip unneeded platforms.

Differential Revision: https://phabricator.services.mozilla.com/D87724
2020-08-27 05:27:44 +00:00
Nick Thomas
9f6c1df957 Bug 1630809 - python3 compatibility for off-cycle partner respins, typo fixes r=aki
Differential Revision: https://phabricator.services.mozilla.com/D87723
2020-08-27 05:27:40 +00:00
David Major
ffe0607216 Bug 1660340 - Switch builds to clang 11.0.0 rc2 r=froydnj
This changes most of our automation builds to clang 11.0.0 rc2.

Not included:
* code coverage builds, per bug 1660341
* mingw builds, which have traditionally been on their own update cadence, and in this case are blocked anyway by bug 1658632

This will leave some unused clang-9 task definitions. I intend to clean them up, but at a later date. For now I want to focus on making sure this update sticks, since patches like this have a tendency to bounce.

Differential Revision: https://phabricator.services.mozilla.com/D88313
2020-08-27 16:26:23 +00:00
Gregory Mierzwinski
49e80e0625 Bug 1660278 - Add libtinfo5 requirement to custom-v8 docker. r=jmaher
This patch fixes an issue in the custom-v8 toolchain where there is tooling missing that is needed to build v8 (the libtinfo5 package).

Differential Revision: https://phabricator.services.mozilla.com/D88310
2020-08-27 14:29:13 +00:00
Florin Strugariu
e7a92c2122 Bug 1625965 - Raptor Youtube-Playback Fenix tests are silently failing on VP9 r=perftest-reviewers,sparky
Depends on D67437

Differential Revision: https://phabricator.services.mozilla.com/D69510
2020-08-27 13:12:32 +00:00
Aki Sasaki
ad0733dd86 Bug 1644574 - run codeql on firefox ship phase r=releng-reviewers,jlorenzo DONTBUILD
Differential Revision: https://phabricator.services.mozilla.com/D88235
2020-08-27 00:23:25 +00:00
James Willcox
3f3208d559 Bug 1657713 - Include GeckoView example and test APKs in multi-locale builds r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D87102
2020-08-25 16:30:39 +00:00
Andrew Halberstadt
99654d61b3 Bug 1657769 - [ci] Run talos bcv on -qr platforms when software webrender is enabled, r=jmaher
From mwoodrow:

bcv is 'basic compositor video', which explicitly disables acceleration using a
pref and then runs some video tests. For normal -qr platforms this isn't
useful, since the pref would disable WebRender, and it'd be an identical
configuation to the non-qr variant.

When software webrender is enabled, disabling acceleration won't disable WR,
and test remains useful (testing video performance of the software webrender
configuration).

The baseline I want to compare against here is the non-qr bcv, to see if
webrender-software is worse than layers-software.

Differential Revision: https://phabricator.services.mozilla.com/D88192
2020-08-25 21:30:43 +00:00
Andrew Halberstadt
b7b4be8d91 Bug 1657769 - [taskgraph] Add ability to 'defer' some keys in resolve_keyed_by, r=taskgraph-reviewers,aki
It's often useful to nest 'by-*' statements in the CI configs. However, calling
'resolve_keyed_by' will keep drilling down and resolving these statements all
at once. Normally this is fine, but sometimes we may want to use, e.g 'by-foo'
when 'foo' hasn't been resolved yet (i.e, it is being set by a later transform
or something like that).

Currently, this means that we'll hit the 'default' case as 'foo' doesn't exist.
This revision adds the ability to 'defer' evaluation of 'foo' until a later
time.

While running into this scenario might be a code smell, re-organizing
transforms to untangle these kinds of ordering dependencies will be a major
undertaking.  Plus, there are legitimate reasons we might want one kind of
ordering with certain tasks, then another ordering for other tasks.

Differential Revision: https://phabricator.services.mozilla.com/D88191
2020-08-26 13:39:51 +00:00
Mihai Alexandru Michis
4a7490750d Backed out changeset 8b1447160ba4 (bug 1651542) as requested by whimboo. 2020-08-26 11:57:30 +03:00
Razvan Maries
b3380a4504 Backed out changeset a716e6202487 (bug 1660964) for Gecko Decision Task bustage. CLOSED TREE 2020-08-26 07:47:14 +03:00
Mike Hommey
9cdb5268e6 Bug 1660964 - Upgrade skopeo to 1.1.1 and kaniko to 1.0.0. r=aki
Differential Revision: https://phabricator.services.mozilla.com/D88116
2020-08-25 20:25:36 +00:00
David Major
3e160f998a Bug 1661129 - Add toolchain tasks for clang 11.0.0 rc2 (not yet used) r=nalexander
This adds toolchain definitions for clang 11.0.0 rc2, so that developers can get a sneak peek, but nothing in automation uses these tasks yet. We'll make the switch in a later patch.

NB: most of `clang.yml` is rote copy-paste, except for `macosx64-clang-11` which makes a deliberate departure, described in a comment.

Differential Revision: https://phabricator.services.mozilla.com/D88189
2020-08-25 22:22:12 +00:00
David Major
00d90b6c8a Bug 1661126 - Update wasi-sdk to pick up clang-11 build fixes r=firefox-build-system-reviewers,rstewart
Also reflects the move from CraneStation to the WebAssembly account. And we need a small tweak to the build script to accommodate one of the changes that got picked up along the way.

Differential Revision: https://phabricator.services.mozilla.com/D88187
2020-08-25 22:19:08 +00:00
Ricky Stewart
d14df1032e Bug 1660614 - Upgrade sccache to pick up more resilient behavior in the presence of cache read failures r=froydnj
This avoids a set of intermittent issues related to `zstd` decompression failures, which in the absence of these changes break the entire build.

This also requires [updating an environment variable](https://github.com/mozilla/sccache/pull/822), which we do in `client.mk` as well as documentation.

Differential Revision: https://phabricator.services.mozilla.com/D88184
2020-08-25 21:16:53 +00:00
Mihai Tabara
6f13573a77 Bug 1660771 - default mergeduty bump-esr to esr78. r=releng-reviewers,bhearsum,jlorenzo DONTBUILD
Differential Revision: https://phabricator.services.mozilla.com/D88140
2020-08-25 13:27:41 +00:00
Tom Prince
5266998a5b Bug 1492362: [taskgraph] Don't delete fetches after running a task; r=glandium
In Bug 1466660, we started deleting the fetches after a task had run, to avoid
interference between tasks. It turns out the only tasks this was for were the
`source-test-jsshell` tasks, which were changed to use an absolute directory in
Bug 1465181. However, since Bug 1568460 we've always used a per-task directory
for fetches, so can remove the work-around of removing fethes.

Differential Revision: https://phabricator.services.mozilla.com/D86670
2020-08-19 11:02:22 +00:00
Tom Prince
d3dcf1b0e8 Bug 1492362: [taskgraph] Stop setting workdir on generic-worker tasks; r=glandium
After changing the default checkout path on linux generic-worker tasks to be
relative these settings have no effect.

Differential Revision: https://phabricator.services.mozilla.com/D86669
2020-08-19 11:02:26 +00:00
Tom Prince
bcca419aba Bug 1492362: [taskgraph] Only use absolute paths for checkouts in docker; r=glandium
We define a value `run.workdir` to point to the defaut directory to use for
all sorts of paths, including checkouts, in the job transform. However, that
directory only makes sense for docker-worker tasks, and relative paths should
be used elsewhere. Adjust the paths on non-docker-worker linux tasks to match
macOS paths.

Differential Revision: https://phabricator.services.mozilla.com/D86668
2020-08-19 11:02:29 +00:00