Граф коммитов

18 Коммитов

Автор SHA1 Сообщение Дата
Dustin J. Mitchell 2fb0796e2b Bug 1286075: add support for optimizing based on files changed in the push; r=gps
MozReview-Commit-ID: 5di7TuL9X2P

--HG--
extra : rebase_source : 30b078178b028b22c0cd7b3d893aa12fd195cf26
2016-09-12 18:40:12 +00:00
Dustin J. Mitchell a02029f475 Bug 1286075: if <kind>/kind.yml doesn't exist, skip it; r=gps
Version control tends to leave kind directories around containing .orig files
or other such detritus.  It's best to just ignore such directories, rather than
failing to generate the taskgraph.

MozReview-Commit-ID: B9GIZndbfi1

--HG--
extra : rebase_source : 58f1debe5219fc52ead2971718da932b63bb06d7
2016-08-18 20:08:22 +00:00
Gregory Szorc e4bcb10295 Backed out changeset 7a3a65ff5865 (bug 1295486) for test failures 2016-08-18 10:21:26 -07:00
Gregory Szorc ebb5c961f7 Bug 1295486 - Decode YAML files to UTF-8 at read time; r=dustin
Before, we'd open files and feed bytes to yaml.load(). When a str
is fed to yaml.load(), it attempts to guess the encoding. It defaults
to UTF-8 unless somebody set us up the BOM. This is probably OK.
Except if the file isn't valid UTF-8, the exception will be raised
in the bowels of YAML parsing and it may not be obvious the failure
is due to invalid UTF-8 input versus say Python str/unicode
coercion foo.

We change all call sites that load YAML from a file to use
codecs.open() to open the file in UTF-8 and perform UTF-8
decoding/validation at file read time. This should make any UTF-8
failures more obvious. Furthermore, it reinforces that our YAML files
are UTF-8 and not some other encoding.

I discovered this issue as part of trying to get emoji symbols to
render on Treeherder. Unfortunately, it appears pyyaml detects
many emoji as unprintable characters and refuses to load them. This
makes me sad and makes me want to abandon pyyaml/YAML in favor of
something that supports emoji :P

MozReview-Commit-ID: AOvAruZFfnK

--HG--
extra : rebase_source : 4c5d42cb63da5c9ebfac55ab84b4f7f8bcc648fa
2016-08-18 08:58:59 -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
Dustin J. Mitchell 647b6edf55 Bug 1281004: factor out searching for python objects by path; r=gps
MozReview-Commit-ID: 4ioEqPA7BQk

--HG--
extra : source : bc47aed3745de266164932e1eb1c7ad244e5f9cb
2016-06-29 22:12:09 +00:00
Dustin J. Mitchell c6a548be78 Bug 1280231: rename types.py to taskgraph.py; r=Callek
MozReview-Commit-ID: Jf6CVyFCGMI

--HG--
rename : taskcluster/taskgraph/types.py => taskcluster/taskgraph/taskgraph.py
extra : rebase_source : 12e30313eb1fd4062c0be9d869460644ae949019
extra : intermediate-source : 4b1d94901b4d09c13031982c28eec6a48f938c71
extra : source : e85765be39d61d7c0df9831e16930328effad554
2016-06-20 19:11:52 +00:00
Dustin J. Mitchell 77ad76d2ad Bug 1280231: Load kinds in order by dependencies; r=jonasfj
This enables kinds that generate tasks based on those output by another kind.
For example, the test kind might generate a set of test tasks for each build
task.

MozReview-Commit-ID: K7ha9OmJ6gd

--HG--
extra : rebase_source : 36fc7e2d9c5987a4bb8b3779cf1a9308f5561828
extra : intermediate-source : 7898d1ab1afc08f78445165d0c94566b0682a2f7
extra : source : 0852b38cd86c42ebba0f9e74d7470a263969b784
2016-06-27 22:31:06 +00:00
Dustin J. Mitchell 49f6131a63 Bug 1280231: refactor task kinds to task classes; r=jonasfj
MozReview-Commit-ID: 1cNukxBgfey

--HG--
extra : rebase_source : 4f0fcce2bcea0fb78ba70e7c052638ca2c5b8a3d
extra : intermediate-source : ba5cbf4e06a550993e5216f816dcf0ccd3938b2e
extra : source : f744bd2fbcd3ae9b90851dcd12307c15d04f8bea
2016-06-27 22:57:44 +00:00
Wes Kocher c9059e6a53 Backed out 3 changesets (bug 1280231) for decision task failures CLOSED TREE
Backed out changeset 4b1d94901b4d (bug 1280231)
Backed out changeset 7898d1ab1afc (bug 1280231)
Backed out changeset ba5cbf4e06a5 (bug 1280231)

--HG--
rename : taskcluster/taskgraph/taskgraph.py => taskcluster/taskgraph/types.py
2016-06-27 15:45:44 -07:00
Dustin J. Mitchell 1a1a14c19c Bug 1280231: rename types.py to taskgraph.py; r=Callek
MozReview-Commit-ID: Jf6CVyFCGMI

--HG--
rename : taskcluster/taskgraph/types.py => taskcluster/taskgraph/taskgraph.py
extra : source : e85765be39d61d7c0df9831e16930328effad554
extra : histedit_source : 732dc9a6b9206be1bb2a3e4f1d507d0001588f6c
2016-06-20 19:11:52 +00:00
Dustin J. Mitchell c0fe75d7d2 Bug 1280231: Load kinds in order by dependencies; r=jonasfj
This enables kinds that generate tasks based on those output by another kind.
For example, the test kind might generate a set of test tasks for each build
task.

MozReview-Commit-ID: K7ha9OmJ6gd

--HG--
extra : source : 0852b38cd86c42ebba0f9e74d7470a263969b784
extra : amend_source : f3e8c306afe29ae75bd1f93d8b76ff2b27ad8ed1
extra : histedit_source : aa1ae93aba51025a0e1bd2ecf473aaa33235e4c7%2C2c704328e983a3d75a834b069431e4f166389b02
2016-06-27 22:31:06 +00:00
Dustin J. Mitchell 4cfe2b182c Bug 1280231: refactor task kinds to task classes; r=jonasfj
MozReview-Commit-ID: 1cNukxBgfey

--HG--
extra : source : f744bd2fbcd3ae9b90851dcd12307c15d04f8bea
2016-06-20 20:45:15 +00:00
Justin Wood 15b23fced1 Bug 1280956 - Use in-tree linter job to flake8 test taskcluster directory. r=dustin
MozReview-Commit-ID: FsWmAnnycZ2

--HG--
extra : rebase_source : 04a32cea2de133cb75472092cffb8a215f7dc603
2016-06-20 21:06:55 -04:00
Dustin J. Mitchell 722b95f979 Bug 1274611: Implement task-graph optimization; r=gps
* Implement & document optimization (although legacy kind doesn't do much of it)
 * Introduce `optimize_target_tasks` parameter to control whether tasks in the
   target set can be optimized (no for try, yes for most other branches)
 * Refactor to include resolved taskIds in the optimized task graph
 * Include a `label-to-taskid.json` artifact.
 * Introduce {'task-reference': '... <dependency-name> ...'} for referring to
   parent tasks' taskId.

MozReview-Commit-ID: LWvlWNz49U5

--HG--
extra : rebase_source : 780e0e23d24b268ade33ecdcbccb5081f32aac48
2016-06-05 19:49:41 +00:00
Dustin J. Mitchell ef1616806f Bug 1273673: log phases of taskgraph generation; r=gps
MozReview-Commit-ID: 1raUmGXSS8b

--HG--
extra : rebase_source : e3b48d7df28fcd4e8b97610a818f303e7cc12559
2016-05-18 15:54:30 +00:00
Dustin J. Mitchell 120576c2a9 Bug 1273673: use Python logging for taskgraph generation; r=gps
MozReview-Commit-ID: EYI6hGFUWP8

--HG--
extra : rebase_source : 06095357cec152790c6025184e4c7c49e5d03835
2016-05-18 18:02:51 +00:00
Dustin J. Mitchell cea2249ca3 Bug 1258497: Implement a new taskgraph generation system; r=gps
The `taskgraph` package generates TaskCluster task graphs based on collections
of task "kinds".  Initially, there is only one kind, the "legacy" kind, which
reads the YAML files from `testing/taskcluster/tasks` to generate the task
graph.

Try syntax is implemented by filtering the tasks in the taskgraph after it has
been created, then extending the result to include any prerequisite tasks.

A collection of `mach taskgraph` subcommands are provided for developers to
extend or debug the task-graph generation process.

MozReview-Commit-ID: 1TJCns4XxZ8

--HG--
rename : testing/taskcluster/docs/index.rst => taskcluster/docs/index.rst
extra : rebase_source : 7b9125281d66044db9bd8e4a1fade16136f384b9
extra : histedit_source : 47640d27080acda0279270babbcf33f5badb0d1c
2016-05-16 22:53:22 +00:00