Commit Graph

68 Commits

Author SHA1 Message Date
Hammad Akhtar
5267b83943 Bug 1302800 - Verify taskgraph implementations against documentation; r=dustin
MozReview-Commit-ID: J8djr4ifvzm

--HG--
extra : rebase_source : 8112a13fdb8e4bc1b004757411384e224305b2ac
2016-11-26 01:22:46 +05:30
Andrew Halberstadt
541a302cee Bug 1318438 - [taskcluster] "job" tasks should have ability to run on multiple platforms, r=dustin
This adds an optional "platforms" key to the job description. It can be used in conjunction with
"by-platform" like so:

platforms:
    - linux
    - windows
worker-type:
    by-platform:
        linux: ...
        windows: ...
worker:
    by-platform:
        linux: ...
        windows: ...

MozReview-Commit-ID: JwL1NAR4bnY

--HG--
extra : rebase_source : 637dd777912e256d82092ba3e0edd6937cbb03c6
2016-11-18 15:07:56 -05:00
Hammad Akhtar
0c3b469c02 Bug 1302765 - Allow ./mach taskgraph .. --parameters P to take a URL. URL building mechanism fixed; r=dustin
MozReview-Commit-ID: 7reezQj9Bds

--HG--
extra : rebase_source : a571294e80491b0918e21697d922abfaa91432b6
2016-11-24 01:15:33 +05:30
Gregory Szorc
0e12f1cc60 Bug 1318200 - Introduce task graph filtering; r=dustin
Previously, we ran a single "target task" function to mutate the full
task graph into a subset based on input parameters (try syntax,
repository being built for, etc). This concept is useful. But
the implementation was limiting because we could only have a single
"target tasks" function.

This commit introduces the concept of "filters." They conceptually
do the same thing as "target tasks methods" but you can run more than
1 of them.

Filters are simply functions that examine an input graph+parameters
and emit nodes that should be retained. Filters, like target tasks
methods, are defined via decorated functions in a module.

TaskGraphGenerator has been converted to use filters. The list of
defined filters can be defined in the parameters dict passed into
TaskGraphGenerator. A default filter list is provided in decision.py.

The intent is to eventually convert target tasks to filters. Until
that happens, we always run the registered target tasks method via
a filter proxy function.

No new tests have been added because we don't yet have any
functionality relying explicitly on filters. Tests will be added in
a subsequent commit once we add a new filter.

While I was here, I also snuck in some logging on the size of the
graphs.

MozReview-Commit-ID: ERn2hIYbMRp

--HG--
extra : rebase_source : 36b8e86aa64b2f52b03b31b5497759b0009fb921
2016-11-17 15:53:30 -08:00
Dustin J. Mitchell
51aa1fc9fb Bug 1296842: make target-task related parameters a fixed set; r=jmaher
The `from_parameters` method was never used, and let do confusion over the role
of these parameters.  Now there are only two, and they are always required.

MozReview-Commit-ID: AbPqijXucu5

--HG--
extra : rebase_source : 85affd063a543c549afaaa36ce7ee31ed1f943d5
2016-11-07 19:13:34 +00:00
Dustin J. Mitchell
80f5b88beb Bug 1296842: document triggered_by property; r=jmaher
MozReview-Commit-ID: 8sAsWbCpUft

--HG--
extra : rebase_source : 496681aec6d0a340db38126464739888b5a8d5ac
2016-11-07 15:26:44 +00:00
Dustin J. Mitchell
a0c1d93465 Bug 1296842: better parameter documentation to help readers; r=jmaher
MozReview-Commit-ID: N9EHe2s6PS

--HG--
extra : rebase_source : 768eb016e09afeffce32ed836bdb0716041b37b9
2016-11-07 15:02:13 +00:00
Jordan Lund
c569b6a415 Bug 1314795 - introduce build_date to params that defaults to pushdate, r=dustin
MozReview-Commit-ID: AviPKtw3BiY

--HG--
extra : rebase_source : 03ea3a98f84ecf977280beff88e69b292c12886d
2016-11-02 19:23:27 -07:00
Gregory Szorc
b547239226 Bug 1312475 - Add a version parameter to checkouts cache; r=dustin
ff5a4bab0813 (bug 1311791) and 332a08725ed0 (bug 1292071) changed
behavior of the VCS caches. First, the store cache / path was merged
into the checkouts cache. Then the path of the Mercurial shared store
was moved within the cache to always be rooted at the cache root.

Caches are shared across tasks. Tasks can execute on any revision
configured to use a cache. So, when interacting with caches, it is
important to consider how every revision configured to use that
cache will interact with it.

Take this scenario for example.

A worker executes a task where the hg shared store is rooted at
/home/worker/checkouts/src/hg-shared. Then the worker executes a
task where the hg shared store is rooted at
/home/worker/checkouts/hg-store. `hg robustcheckout` will see the
checkout from the first task. But then it sees that the store
it is pointing to is at an unexpected location
(checkouts/src/hg-shared instead of checkouts/hg-store). `hg
robustcheckout` aggressively normalizes state to ensure
consistency. So when it sees this mismatch, it blows away the
checkout and creates one from checkouts/hg-store to replace it.
That's a lot of overhead. And this cycle can repeat itself if
the right combination of revisions run on the worker!

A solution to this problem is to create a clean break from caches
when cache semantics change. In TaskCluster, that means using a
different cache.

This commit introduces a "version" component to the checkouts
cache name. By doing so, we create a clean break from all previous
caches, ensuring all revisions this point forward won't encounter
an hg shared store at an unexpected location. This also paves the
road for easily making additional clean breaks in the future.

MozReview-Commit-ID: JT8yuULKpch

--HG--
extra : rebase_source : 2e5d321e4314ff7543423d3c7837b770b7c8a3a3
2016-10-24 09:58:01 -07:00
Gregory Szorc
0363e0cffb Bug 1306641 - Remove TaskCluster automation related to b2g; r=dustin
This definitely isn't all of it. But I got the obvious chunks. Still
need to clean up mozharness.

MozReview-Commit-ID: JTZBydP3i2r

--HG--
extra : rebase_source : 782401359036751896ef6c153a81a06cb14031bb
2016-09-30 09:21:09 -07:00
Gregory Szorc
f67f676a52 Bug 1292071 - Put Mercurial store on same cache as checkout; r=dustin
We were seeing issues with the Mercurial working directory not being
pristine. While I can't reproduce this, I have a hunch it is due to
mixing and matching stores and checkouts in TaskCluster. For example,
if a worker supports running concurrent tasks and 2 tasks arrive at
the same time, the caches for the store and checkout may look like:

  (store0, checkout0)
  (store1, checkout1)

However, the next task may get:

  (store1, checkout0)

This may confuse Mercurial.

This commit eliminates the "hg-shared" cache and places the shared
stores as a sibling directory of the checkout.

MozReview-Commit-ID: 8SzyS6wWf9C

--HG--
extra : rebase_source : 6205f3fe944a6ad2cb833a5a7c0ae5ba136eaea6
2016-10-18 09:46:55 -07:00
Dustin J. Mitchell
123cde8ef1 Bug 1302776: document caches; r=gps
MozReview-Commit-ID: Dy9aXGo5O4u

--HG--
extra : rebase_source : 265f7548bb83db2cc5d8bc5e7bdfbfd81342c7e5
2016-10-20 14:44:26 +00:00
Greg Mierzwinski
7bf3a43886 Bug 1305242 - Disable linux64-jsdcov and linux64-ccov from running on try with '-u all'. r=dustin
This patch prevents tests which have the 'run_on_projects' attribute assigned to an empty set from running when the try message contains '-p all' and '-u all' together. It also makes the 'match_test' function a little more readable and updates the 'attributes.rst' document to reflect the changes that were made.

MozReview-Commit-ID: IMk0cmSza8U

--HG--
extra : rebase_source : 06d542cbec16bd8091bc282ad1b831fb4671e72a
2016-09-24 14:31:25 -04:00
Dustin J. Mitchell
563889b98c Bug 1307571: more detail on loading tasks and transforms; r=kmoir
In particular, this makes a stronger push for readers to consult the source
files, which honestly have all the good stuff in them anyway.

MozReview-Commit-ID: 9dGWQw59h1L

--HG--
extra : rebase_source : fac2fe9324a6a35825ceece948d1960487a75aa5
2016-10-04 21:06:17 +00:00
Dustin J. Mitchell
c6b11c1a07 Bug 1307571: dissuade use of templates; r=Callek
MozReview-Commit-ID: C3PZItmMJcs

--HG--
extra : rebase_source : 53d84145e19573d2e7b25b530a40dabcbe953e47
2016-10-04 21:05:43 +00:00
Dustin J. Mitchell
a9818e5b7c Bug 1307571: move reference docs to a sub-TOC; r=mshal
MozReview-Commit-ID: DUeMZ11TZc0

--HG--
extra : rebase_source : 955cadf0af5de401468ff4d333f3fff4499937e2
2016-10-04 19:59:05 +00:00
Dustin J. Mitchell
a4290a7d44 Bug 1307571: fix lost action-tasks docs; r=martianwars
MozReview-Commit-ID: HDs8J3EmmVB

--HG--
extra : rebase_source : a89ccac74ae45fe5d5cc12f6074d1199beb19e88
2016-10-04 19:48:31 +00:00
Brian Stack
cdb0f1ed9b Bug 1275774 - Fix taskcluster how-to docs example command r=dustin
MozReview-Commit-ID: 8gFeRHeSRd8

--HG--
extra : rebase_source : 55907a4e37de881ae8400bdaa4a287c70217cca7
2016-09-16 13:46:03 -07:00
Jordan Lund
eec7a1c8df Bug 1302590 - remove nightly-fennec kind. use build kind for nightlies, r=dustin
* add fennec nightly build to job whitelist

MozReview-Commit-ID: F8MCUWwlFYD

--HG--
rename : taskcluster/ci/signing/signing.yml => taskcluster/ci/build-signing/android-signing.yml
rename : taskcluster/ci/signing/kind.yml => taskcluster/ci/build-signing/kind.yml
extra : rebase_source : 5c6095daaa6d8994d7bdf0d2cc2770e41aca73ca
extra : source : 1b269fb8a704a1a1fd2fe67543b9a083ce155563
2016-09-16 01:20:38 -07:00
Iris Hsiao
6ca36f4b20 Backed out changeset 1b269fb8a704 (bug 1302590) for Gecko Decision Task bustage
--HG--
rename : taskcluster/ci/build-signing/kind.yml => taskcluster/ci/signing/kind.yml
rename : taskcluster/ci/build-signing/android-signing.yml => taskcluster/ci/signing/signing.yml
2016-09-20 10:59:19 +08:00
Jordan Lund
5545a3ed5a Bug 1302590 - remove nightly-fennec kind. use build kind for nightlies, r=dustin
MozReview-Commit-ID: F8MCUWwlFYD

--HG--
rename : taskcluster/ci/signing/signing.yml => taskcluster/ci/build-signing/android-signing.yml
rename : taskcluster/ci/signing/kind.yml => taskcluster/ci/build-signing/kind.yml
extra : rebase_source : 03843faf57443c7b739e8a3ca8431ad238aaca0d
extra : amend_source : 0cee146f52564990f8274c5bf7525bd09dc78f94
2016-09-16 01:20:38 -07:00
Dustin J. Mitchell
e4e3e5240b Bug 1286075: add how-tos covering new functionality; r=gps
MozReview-Commit-ID: 5l6v81UKskC

--HG--
extra : rebase_source : 8fb77e5c5fe5761df489eef1dc65b5ac11ab437b
2016-09-09 21:29:27 +00:00
Dustin J. Mitchell
bfea831cd8 Bug 1286075: delete the legacy kind; r=mshal
MozReview-Commit-ID: F99tUGUWj6d

--HG--
rename : taskcluster/ci/legacy/routes.json => testing/mozharness/configs/routes.json
extra : rebase_source : a437dd30dac1add3f439a98a8d910d2bdbcc843f
2016-09-08 00:31:35 +00:00
Dustin J. Mitchell
36b108725b Bug 1286075: add a (temporary) marionette-harness kind; r=maja_zf
This has some notes for future work on the task, but will work for now.

MozReview-Commit-ID: 7J4tQeKj3KJ

--HG--
extra : rebase_source : d171b5393fa340a47927e8b89ece93392ff23e56
2016-09-08 00:32:50 +00:00
Dustin J. Mitchell
26f2d36fc7 Bug 1286075: add a b2g-device kind; r=gerard-majax
MozReview-Commit-ID: GaP2xGF3WzJ

--HG--
extra : rebase_source : a9e3f4c9232ccff3c135a9d3f63956e4f44c25df
2016-09-12 18:04:18 +00:00
Dustin J. Mitchell
9bb2b3ed24 Bug 1286075: add a spidermonkey kind; r=sfink
MozReview-Commit-ID: 4uI8LxHrSOS

--HG--
extra : rebase_source : e30d431e48bf12cd6752de07f224dfb232a55c14
2016-09-12 18:04:24 +00:00
Dustin J. Mitchell
eb34ebceda Bug 1286075: add a toolchain kind; r=gps
MozReview-Commit-ID: EEeQdA9aPPq

--HG--
extra : rebase_source : c1365c69e5c0d8bf4bfc8079d6f9fe8f43156cee
2016-09-12 18:04:31 +00:00
Dustin J. Mitchell
3ad0d4341d Bug 1286075: add a static-analysis kind; r=Ehsan
MozReview-Commit-ID: G8muXBcNd5L

--HG--
extra : rebase_source : 3f824f01ea7833adb8142fa9dc65c90e3fa990b3
2016-09-08 00:31:35 +00:00
Dustin J. Mitchell
a83a8a116a Bug 1286075: add a valgrind kind; r=mshal
MozReview-Commit-ID: IM6iFkBIHam

--HG--
extra : rebase_source : 7ed690bd74cc7e45dde76696ea4c6cf5af7acdf1
2016-09-07 00:48:31 +00:00
Dustin J. Mitchell
126e67628e Bug 1286075: add upload-symbols kind; r=ted.mielczarek
MozReview-Commit-ID: C3Se6gdSPri

--HG--
extra : rebase_source : 593030907b5edcdbb0f8863f4226a73b50d32b51
2016-09-07 15:08:28 +00:00
Dustin J. Mitchell
7ad064d6b0 Bug 1286075: add source-check kind; r=ahal
MozReview-Commit-ID: EDdPraYxNlH

--HG--
extra : rebase_source : aab182e3dfda2bbe831f8aef6a06a0d946384b8f
2016-09-12 18:39:05 +00:00
Dustin J. Mitchell
f24c79cf78 Bug 1286075: add l10n kind; r=Callek
MozReview-Commit-ID: 3mR5AxWSk9P

--HG--
extra : rebase_source : 14de8e0682c2dfda52bfce63905bd384c92ff7a7
2016-09-09 21:06:51 +00:00
Dustin J. Mitchell
fd289830f7 Bug 1286075: add hazard kind; r=sfink
MozReview-Commit-ID: qvFg2O6OwB

--HG--
extra : rebase_source : 0f118b793b2ff1078a72c2a60bda36d51f25ad70
2016-09-12 18:04:09 +00:00
Dustin J. Mitchell
39bb843d5d Bug 1286075: add artifact-build kind; r=chmanchester r=gps
MozReview-Commit-ID: 41WpDtXvoPb

--HG--
extra : rebase_source : c2906b9e4333fcd11568d5a7a43582203a623649
2016-09-07 01:01:52 +00:00
Dustin J. Mitchell
ea5260dea0 Bug 1286075: add a build kind, modify tests to use it; r=jlund
MozReview-Commit-ID: DkpkkSRxVB9

--HG--
extra : rebase_source : e9d8764b64dff35e374bc669b1769cb6c2ce0eeb
2016-09-12 18:34:06 +00:00
Dustin J. Mitchell
d68c5bcdcc Bug 1286075: introduce job descriptions and implementations; r=gps
MozReview-Commit-ID: HNXPjt3XnXe

--HG--
extra : rebase_source : 82fc319882cad00fd5d623fb045620e157682278
2016-09-12 15:53:14 +00:00
Dustin J. Mitchell
4d387f2490 Bug 1286075: add more functionality to the task description; r=mshal
The task description now includes

 * flexible specification of index routes (this will get simpler once buildbot
   and gecko.v1 routes are removed)

 * "run-on-projects", indicating the projects on which this task should run

 * "{level}" is allowed in workerTypes

 * For the docker-worker/docker-engine worker implementations, "docker-image"
   can have the form {in-tree: in-tree-name} to use an in-tree image.  This was
   previously implemented in the test transforms, but it is useful for other
   tasks too!

 * Optimizations, currently limited to "only-if-files-changed", can be specified
   for each task.

 * TreeHerder groupSymbol is optional

 * expires-after and and deadline-after have default values (with the former
   differing for try and non-try)

 * coalesce-name triggers creation of both a coalesce route and a superseder URL

MozReview-Commit-ID: 70vtYs5lz5P

--HG--
extra : rebase_source : 9c557d68239f42466d9724d48ed5bf77648f9aa0
2016-09-12 15:51:49 +00:00
Dustin J. Mitchell
e7fecbd4ae Bug 1286075: rename taskgraph.transforms.make_task; r=wcosta
Rename to taskgraph.transforms.task.

This also adds some Required and Optional declarations to the schema to be explicit,
and adjusts the transform to handle treeherder being optional.

MozReview-Commit-ID: FuKYayvlwB9

--HG--
rename : taskcluster/taskgraph/transforms/make_task.py => taskcluster/taskgraph/transforms/task.py
extra : rebase_source : 0913aa8cdf153cd086a7786de957535e9b3a4ee8
2016-08-31 15:24:54 +00:00
Dustin J. Mitchell
28eaabb6b2 Bug 1294065: describe transitive closure; r=garndt
MozReview-Commit-ID: GYPKA81gkJP

--HG--
extra : rebase_source : cdc61a431a7118e10b9fb2709f616c17db599652
2016-08-10 14:37:32 +00:00
Dustin J. Mitchell
f7a9bbac26 Bug 1293733: accept pushdate from command line; r=garndt
MozReview-Commit-ID: BrGiowlMVCa

--HG--
extra : rebase_source : e47b9e18b9dbc9e617f9bad165318a74c4e96e36
extra : source : fc1ed3fd8584161ae4693bd1c956e8254368b6bc
2016-07-13 18:50:50 +00:00
Gregory Szorc
a00feedd9f Backed out changeset fc1ed3fd8584 (bug 1291473) on suspicion of breaking decision tasks 2016-08-08 13:15:37 -07:00
Dustin J. Mitchell
05e1597215 Bug 1291473: accept pushdate from command line; r=garndt
MozReview-Commit-ID: BrGiowlMVCa

--HG--
extra : rebase_source : cf257129fcb1f6214949407b6a3956fd9698aa5b
2016-07-13 18:50:50 +00:00
Dustin J. Mitchell
5e8cbd7fb2 Bug 1290523: support generic-worker task descriptions; r=pmoore
MozReview-Commit-ID: CHIGSrB1MIu

--HG--
extra : rebase_source : 41e56a996867dde93fd8f5f67411f81200b507b8
2016-07-29 17:50:09 +00:00
Armen Zambrano Gasparnian
ff5e584d9d Bug 1279676 - Support --rebuild try flag to schedule tests N times. r=dustin
MozReview-Commit-ID: Lrxi8t53nwy

If a developer adds '--rebuild N' to their try syntax they will get test jobs scheduled N times.
This is useful to determine intermittency rate.

This fixes a regression due to the recent refactoring on how we schedule tasks.

--HG--
extra : rebase_source : 355ca631353015bf63461c194168d753efd6958e
2016-07-28 13:20:44 -04:00
Gregory Szorc
96fa6fe838 Bug 1289643 - Change path for checkouts from "workspace" to "checkouts"; r=dustin
Currently, TaskCluster tasks tend to use the "workspace" directory as
a cache that manages the source checkout *and* additional state.

Historically at Mozilla, we've lumped "source checkout" and "workspace"
(sometimes known as an "objdir") into the same directory. This is
not ideal. Ideally, there is an immutable, read-only source checkout
and all files produced from that source live in a separate directory.

In this commit, the "workspace" directory for the "lint" image has been
renamed to "checkouts" and all tasks using the image have been updated
accordingly. By having "checkout" in the name, we clearly identify this
cache as being relevant to source checkouts, which IMO can serve a
different role from "workspaces." This distinction is important, as the
next commit will prevent the "checkouts" cache from getting optimized
out in certain tasks.

To hammer this point home, documentation on common caches has been
introduced.

MozReview-Commit-ID: BSEc4dM5YCt

--HG--
extra : rebase_source : 5a62939e066d3723736b41e14007112d92346684
2016-07-29 10:44:19 -07:00
Gregory Szorc
fc3f70b542 Bug 1288567 - Add special Dockerfile syntax to add arbitrary files to context; r=dustin
A limitation of traditional docker build context generation is it
only includes files from the same directory as the Dockerfile. When
repositories have multiple, related Dockerfiles, this limitation
results file duplication or putting all Dockerfiles in the same
directory (which isn't feasible for mozilla-central since they would
need to be in the root directory).

This commit enhances Dockerfiles to allow *any* file from the
repository checkout to be ADDed to the docker build context.

Using the syntax "# %include <path>" you are able to include paths
or directories (relative from the top source directory root) in the
generated context archive. Files add this way are available under the
"topsrcdir/" path and can be ADDed to Docker images.

Since context archive generation is deterministic and the hash of
the resulting archive is used to determine when images need to be
rebuilt, any extra included file that changes will change the hash
of the context archive and force image regeneration.

Basic tests for the new feature have been added.

MozReview-Commit-ID: 4hPZesJuGQV

--HG--
extra : rebase_source : 99fae9fe82102126fbee879c134981047bb4a601
2016-07-21 16:51:30 -07:00
Dustin J. Mitchell
ffca84ff7d Bug 1281004: Specify test tasks more flexibly; r=gps; r=gbrown
This introduces a completely new way of specifying test task in-tree,
completely replacing the old spider-web of YAML files.

The high-level view is this:

 - some configuration files are used to determine which test suites to run
   for each test platform, and against which build platforms

 - each test suite is then represented by a dictionary, and modified by a
   sequence of transforms, duplicating as necessary (e.g., chunks), until
   it becomes a task definition

The transforms allow sufficient generality to support just about any desired
configuration, with the advantage that common configurations are "easy" while
unusual configurations are supported but notable for their oddness (they
require a custom transform).

As of this commit, this system produces the same set of test graphs as the
existing YAML, modulo:

  - extra.treeherder.groupName -- this was not consistent in the YAML
  - extra.treeherder.build -- this is ignored by taskcluster-treeherder anyway
  - mozharness command argument order
  - boolean True values for environment variables are now the string "true"
  - metadata -- this is now much more consistent, with task name being the label

Testing of this commit demonstrates that it produces the same set of test tasks for
the following projects (those which had special cases defined in the YAML):

  - autoland
  - ash (*)
  - willow
  - mozilla-inbound
  - mozilla-central
  - try:
    -b do -p all -t all -u all
    -b d -p linux64,linux64-asan -u reftest -t none
    -b d -p linux64,linux64-asan -u reftest[x64] -t none[x64]

(*) this patch omits the linux64/debug tc-M-e10s(dt) test, which is enabled on
ash; ash will require a small changeset to re-enable this test.

IGNORE BAD COMMIT MESSAGES (because the hook flags try syntax!)

MozReview-Commit-ID: G34dg9f17Hq

--HG--
rename : taskcluster/taskgraph/kind/base.py => taskcluster/taskgraph/task/base.py
rename : taskcluster/taskgraph/kind/docker_image.py => taskcluster/taskgraph/task/docker_image.py
rename : taskcluster/taskgraph/kind/legacy.py => taskcluster/taskgraph/task/legacy.py
extra : rebase_source : 03e70902c2d3a297eb9e3ce852f8737c2550d5a6
extra : histedit_source : d4d9f4b192605af21f41d83495fc3c923759c3cb
2016-07-11 23:27:14 +00:00
Kalpesh Krishna
7eccb69c1c Bug 1281062 - Create Action Tasks to schedule new jobs. r=dustin
MozReview-Commit-ID: 5MvqLfGrlLC

--HG--
extra : rebase_source : dd954acce8ef9ed2f3b9aa7c5c2cbd916a82f1f1
2016-07-11 22:43:58 +05:30
Kalpesh Krishna
e5474c6adb Bug 1285755 - Adding a from_json function to TaskGraph and each Task subclass. r=dustin
MozReview-Commit-ID: 8fmALSP8nDs

--HG--
extra : rebase_source : 52729a77206498ca32e716ae3774e21f6329f805
2016-07-11 22:39:04 +05:30
Kalpesh Krishna
3112858067 Bug 1284005 - Replacing timestamps with relative timestamps. r=dustin 2016-07-06 03:03:00 +02:00