|
overall |
|
------- |
|
|
|
old way: flags say what to parse |
|
new way: parse it all, filter by flags |
|
|
|
transition: |
|
* parse '-b do -p all -u all', tag with filename (and build filename) as attribute, filter on that |
|
* add sufficient attributes via yml files to allow filtering |
|
- some kind of testing to ensure things work OK |
|
|
|
NOTE: talos not supported |
|
NOTE: additional-parameters not used |
|
|
|
proposed attributes: |
|
** do we want k/v attributes or just string matches? |
|
- kind={legacy,build,test,..} |
|
- build-type={dbg, opt} (-b, expanded) |
|
- platform={linux,linux64,..} (-p, post aliases) |
|
- unittest-suite={mochitests,..} (-u, post aliases) |
|
- talos-suite={..} (-t) |
|
- chunk=N |
|
- job=.. (-j) |
|
|
|
what to do about post-build jobs like symbol uploads? |
|
- select them with the corresponding build jobs |
|
- still need to be able to enable/disable for different branches |
|
|
|
load_tasks |
|
---------- |
|
|
|
load branch-appropriate flags/builds file |
|
call parse_commit with it |
|
collect set of changed files from vcs |
|
filter out results with non-matching "when" (by implication all downstream tasks too) |
|
for each result: |
|
load build template with lots of parameters |
|
format URLs for build products |
|
lots of magic transformations |
|
for each post-build: |
|
make task with configure_dependent_task (set requires, copy over TH config |
|
for each test: |
|
for each chunk: |
|
make task with configure_dependent_task |
|
for range(trigger_tests): |
|
add task |
|
|
|
parse_commit |
|
------------ |
|
|
|
jobs arg = from testing/taskcluster/tasks/branches/try/job_flags.yml; see below |
|
|
|
args.jobs = -j, comma-separated |
|
build_types = ['opt', 'debug'] |
|
platforms = list of build names (-p) |
|
|
|
parse_test_opts parses -u (-t is totally ignored!); parses testname[platform] |
|
into [{'test': 'name', 'platforms': ['..']}]; platforms omitted if not specified |
|
tests = [{test: .., platforms: [..], only_chunks: [..]}, ..] |
|
|
|
loop over platforms (-p) |
|
platform builds is jobs['builds'][platform] (skip if missing) |
|
loop over build types (-b) |
|
platform_build = platform_builds['types'][build_type], so {'task': <path>, (optional) additional_parameters: {}} |
|
adds post-build based on flags.post-build, where alloewd_build_tasks matches (or doesn't exist) (anthony) |
|
adds "dependents" w/ extrac_tests_from_platform: |
|
for each test in tests (from options): |
|
if build job path doesn't match alloewd_build_tasks, ignore |
|
if build_platform['platforms'] doesn't match test['platforms'], ignore |
|
add test_task {'allowed_build_tasks': ..} |
|
copy only_chunks into test_task if given |
|
add all tasks aka jobs that are not excluded with -j (including via tags, but there are no tags) |
|
|
|
result is |
|
task: <path> |
|
post-build: |
|
- allowed_build_tasks: .. |
|
- <build path> |
|
- <build path> |
|
- .. |
|
task: <path> |
|
dependents: |
|
- allowed_build_tasks: |
|
<build path>: |
|
task: <test path> |
|
additional-parameters: {..} |
|
build_name: <plat name> |
|
build_type: <debug or opt> |
|
interactive: t/f |
|
when: |
|
file_patterns: .. |
|
|
|
|
|
job_flags |
|
--------- |
|
flags: |
|
aliases: |
|
fb: foobar |
|
|
|
builds: |
|
- <build names> |
|
|
|
tests: |
|
- <test names> |
|
|
|
post-build: |
|
- upload-symbols |
|
|
|
builds: |
|
<build name> |
|
platforms: |
|
- b2g, Android, Linux, etc. |
|
types: |
|
opt: |
|
task: <path> |
|
debug: |
|
task: <path> |
|
|
|
post-build: |
|
upload-symbols: |
|
allowed_build_tasks: |
|
- <paths> |
|
task: <path> |
|
|
|
tests: |
|
<test name>: |
|
allowed_build_tasks: |
|
<build path>: |
|
task: <test path> |
|
|
|
tasks: # -j flag (because why give it one name when you can give it two instead) |
|
<task>: |
|
task: <path> |
|
root: t/f -- if false, don't run |
|
(tags: ..) -- basically aliases, apparently unused |
|
when: |
|
file_patterns: |
|
.. |