| version: 1 |
| policy: |
| pullRequests: collaborators |
| tasks: |
| $flattenDeep: |
| - $if: tasks_for == "github-push" |
| then: |
| $map: |
| $flatten: |
| $match: { |
| event.ref == "refs/heads/master": [{name: firefox, channel: nightly}, {name: chrome, channel: dev}], |
| event.ref == "refs/heads/epochs/daily": [{name: firefox, channel: beta}, {name: chrome, channel: beta}], |
| event.ref == "refs/heads/epochs/weekly": [{name: firefox, channel: stable}, {name: chrome, channel: stable}] |
| } |
| each(browser): |
| $map: |
| - [testharness, 1, 15] |
| - [testharness, 2, 15] |
| - [testharness, 3, 15] |
| - [testharness, 4, 15] |
| - [testharness, 5, 15] |
| - [testharness, 6, 15] |
| - [testharness, 7, 15] |
| - [testharness, 8, 15] |
| - [testharness, 9, 15] |
| - [testharness, 10, 15] |
| - [testharness, 11, 15] |
| - [testharness, 12, 15] |
| - [testharness, 13, 15] |
| - [testharness, 14, 15] |
| - [testharness, 15, 15] |
| - [reftest, 1, 10] |
| - [reftest, 2, 10] |
| - [reftest, 3, 10] |
| - [reftest, 4, 10] |
| - [reftest, 5, 10] |
| - [reftest, 6, 10] |
| - [reftest, 7, 10] |
| - [reftest, 8, 10] |
| - [reftest, 9, 10] |
| - [reftest, 10, 10] |
| - [wdspec, 1, 1] |
| each(chunk): |
| taskId: {$eval: 'as_slugid(browser.name + browser.channel + chunk[0] + str(chunk[1]))'} |
| taskGroupId: {$eval: 'as_slugid("task group")'} |
| created: {$fromNow: ''} |
| deadline: {$fromNow: '24 hours'} |
| provisionerId: aws-provisioner-v1 |
| workerType: |
| $if: event.repository.full_name == 'web-platform-tests/wpt' |
| then: |
| wpt-docker-worker |
| else: |
| github-worker |
| metadata: |
| name: wpt-${browser.name}-${browser.channel}-${chunk[0]}-${chunk[1]} |
| description: >- |
| A subset of WPT's "${chunk[0]}" tests (chunk number ${chunk[1]} |
| of ${chunk[2]}), run in the ${browser.channel} release of |
| ${browser.name}. |
| owner: ${event.pusher.email} |
| source: ${event.repository.url} |
| payload: |
| image: jugglinmike/web-platform-tests:0.21 |
| maxRunTime: 7200 |
| artifacts: |
| public/results: |
| path: /home/test/artifacts |
| type: directory |
| command: |
| - /bin/bash |
| - --login |
| - -c |
| - set -ex; |
| ~/start.sh |
| ${event.repository.url} |
| ${event.ref} |
| ${event.after} |
| ${browser.name} |
| ${browser.channel}; |
| cd ~/web-platform-tests; |
| ./tools/ci/taskcluster-run.py |
| ${browser.name} |
| -- |
| --channel=${browser.channel} |
| --log-wptreport=../artifacts/wpt_report.json |
| --no-fail-on-unexpected |
| --test-type=${chunk[0]} |
| --this-chunk=${chunk[1]} |
| --total-chunks=${chunk[2]}; |
| - $if: tasks_for == "github-pull-request" |
| then: |
| $map: [{name: firefox, channel: nightly}, {name: chrome, channel: dev}] |
| each(browser): |
| $map: |
| - name: wpt-${browser.name}-${browser.channel}-stability |
| description: >- |
| Verify that all tests affected by a pull request are stable |
| when executed in ${browser.name}. |
| extra_args: '--verify' |
| - name: wpt-${browser.name}-${browser.channel}-results |
| description: >- |
| Collect results for all tests affected by a pull request in |
| ${browser.name}. |
| extra_args: '--no-fail-on-unexpected --log-wptreport=../artifacts/wpt_report.json' |
| each(operation): |
| taskId: {$eval: 'as_slugid(operation.name)'} |
| taskGroupId: {$eval: 'as_slugid("task group")'} |
| created: {$fromNow: ''} |
| deadline: {$fromNow: '24 hours'} |
| provisionerId: aws-provisioner-v1 |
| workerType: |
| $if: event.repository.full_name == 'web-platform-tests/wpt' |
| then: |
| wpt-docker-worker |
| else: |
| github-worker |
| metadata: |
| name: ${operation.name} |
| description: ${operation.description} |
| owner: ${event.pull_request.user.login}@users.noreply.github.com |
| source: ${event.repository.url} |
| payload: |
| image: jugglinmike/web-platform-tests:0.21 |
| maxRunTime: 7200 |
| artifacts: |
| public/results: |
| path: /home/test/artifacts |
| type: directory |
| # Fetch the GitHub-provided merge commit (rather than the pull |
| # request branch) so that the tasks simulate the behavior of the |
| # submitted patch after it is merged. Using the merge commit also |
| # simplifies detection of modified files because the first parent |
| # of the merge commit can consistently be used to summarize the |
| # changes. |
| command: |
| - /bin/bash |
| - --login |
| - -c |
| - set -ex; |
| ~/start.sh |
| ${event.repository.clone_url} |
| refs/pull/${event.number}/merge |
| FETCH_HEAD |
| ${browser.name} |
| ${browser.channel}; |
| cd ~/web-platform-tests; |
| result=0; |
| ./tools/ci/taskcluster-run.py |
| --commit-range HEAD^ |
| ${browser.name} |
| -- |
| --channel=${browser.channel} |
| ${operation.extra_args} || result=$?; |
| echo $result > ../artifacts/run-return-code.txt; |
| echo "Command exited with code $result (failures are allowed while this task is being vetted)." |