-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create a decision task for taskcluster #19401
Conversation
Submitting the task to Taskcluster failed. DetailsInterpreterError at template.tasks[0].payload.command[3]: object has no property after |
9ae1398
to
16e0829
Compare
What's your preference here? Rebasing all PRs would cause a huge spike in CI resource usage and noise that'll probably cause people to mark all their notifications as read for a few days. What does the "care is required" approach look like in practice? What are the sorts of changes we can't make in the setup after this is landed that would break existing PRs? See also web-platform-tests/wpt-pr-bot#81 for an idea I proposed yesterday. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed up to and including tools/ci/tc/decision.py, need a break :)
owner: "${event.sender.login}@users.noreply.github.com" | ||
source: ${event.repository.clone_url} | ||
payload: | ||
image: harjgam/web-platform-tests:0.33 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs to be updated if #19754 is merge before this. It'd be a conflict, but the conflicts in this file will be huge.
ffc986d
to
ac6475f
Compare
I updated this, and replied to some comments, so I think it's ready for a second round of review. |
@jgraham there are still conflicts, can you resolve those first? |
s/still/again/ since all the conflicts were resolved in the last push and then more changes happened on master. |
I didn't notice the intermediate state of no conflicts :) |
620562b
to
e6e2412
Compare
Submitting the task to Taskcluster failed. DetailsInterpreterError at template.tasks[0].payload.command[3]: object has no property after |
e6e2412
to
962143c
Compare
@jgraham more conflicts and CI failures :) Maybe we should try to work on this sync on IRC at some point to get it green and then immediately reviewed and merged? |
962143c
to
c98757f
Compare
6c89690
to
636f37d
Compare
@foolip I found the parts of this that got lost, so AFAIK it's now up to date with master, and the resolved review issues are correct. There are still some open questions, so I anticipate needing at least one more round of fixes. |
Submitting the task to Taskcluster failed. DetailsInterpreterError at template.tasks[0].payload.command[3]: object has no property after |
A decision task is the first task run, and ensures that we only schedule subsequent tasks which are relevant to the current push or pull request. This dynamic scheduling helps reduce load since we avoid spinning up workers for tasks that ultimately don't run, and unlocks new possibilities since we are able to schedule tasks that are dependent on other tasks. The tasks, their scheduling criteria and their dependnecies are specified in a a YAML format configuration file in tools/ci/tc/tasks/test.yml. This has a bespoke format, adopting some ideas from Azure and Gecko's taskcluster integration. The format is documented in `tools/ci/tc/README.md`. The data in that file undergoes trandformations to produce a set of tasks, which are then filtered according to the event that caused the decision task to run. To initially prove out the implementation of dependent tasks we make the Firefox tasks depend on a download task. But this does not yet include the work to actually make the dependent tasks download Firefox from the parent task.
f9383ee
to
ec265e7
Compare
PR #19401 dropped the --checkout flag to run_tc.py for jobs triggered by master pushes. Luckily, there is a new assertion in place that has caught the bug. Examples: Before: https://community-tc.services.mozilla.com/tasks/BaIMAbGZR_SsgHYyUAWA0g/runs/0/logs/https%3A%2F%2Fcommunity-tc.services.mozilla.com%2Fapi%2Fqueue%2Fv1%2Ftask%2FBaIMAbGZR_SsgHYyUAWA0g%2Fruns%2F0%2Fartifacts%2Fpublic%2Flogs%2Flive.log#L37 After: https://community-tc.services.mozilla.com/tasks/L77FVIkURm6XiP96FK3JMg/runs/0/logs/https%3A%2F%2Fcommunity-tc.services.mozilla.com%2Fapi%2Fqueue%2Fv1%2Ftask%2FL77FVIkURm6XiP96FK3JMg%2Fruns%2F0%2Fartifacts%2Fpublic%2Flogs%2Flive.log#L24 Note: this is NOT covered by unit tests.
PR #19401 dropped the --checkout flag to run_tc.py for jobs triggered by master pushes. Luckily, there is a new assertion in place that has caught the bug. Examples: Before: https://community-tc.services.mozilla.com/tasks/BaIMAbGZR_SsgHYyUAWA0g/runs/0/logs/https%3A%2F%2Fcommunity-tc.services.mozilla.com%2Fapi%2Fqueue%2Fv1%2Ftask%2FBaIMAbGZR_SsgHYyUAWA0g%2Fruns%2F0%2Fartifacts%2Fpublic%2Flogs%2Flive.log#L37 After: https://community-tc.services.mozilla.com/tasks/L77FVIkURm6XiP96FK3JMg/runs/0/logs/https%3A%2F%2Fcommunity-tc.services.mozilla.com%2Fapi%2Fqueue%2Fv1%2Ftask%2FL77FVIkURm6XiP96FK3JMg%2Fruns%2F0%2Fartifacts%2Fpublic%2Flogs%2Flive.log#L24 Note: this is NOT covered by unit tests.
PR #19401 dropped the --checkout flag to run_tc.py for jobs triggered by master pushes. Luckily, there is a new assertion in place that has caught the bug. Examples: Before: https://community-tc.services.mozilla.com/tasks/BaIMAbGZR_SsgHYyUAWA0g/runs/0/logs/https%3A%2F%2Fcommunity-tc.services.mozilla.com%2Fapi%2Fqueue%2Fv1%2Ftask%2FBaIMAbGZR_SsgHYyUAWA0g%2Fruns%2F0%2Fartifacts%2Fpublic%2Flogs%2Flive.log#L37 After: https://community-tc.services.mozilla.com/tasks/L77FVIkURm6XiP96FK3JMg/runs/0/logs/https%3A%2F%2Fcommunity-tc.services.mozilla.com%2Fapi%2Fqueue%2Fv1%2Ftask%2FL77FVIkURm6XiP96FK3JMg%2Fruns%2F0%2Fartifacts%2Fpublic%2Flogs%2Flive.log#L24 Note: this is NOT covered by unit tests.
PR #19401 dropped the --checkout flag to run_tc.py for jobs triggered by master pushes. Luckily, there is a new assertion in place that has caught the bug. Examples: Before: https://community-tc.services.mozilla.com/tasks/BaIMAbGZR_SsgHYyUAWA0g/runs/0/logs/https%3A%2F%2Fcommunity-tc.services.mozilla.com%2Fapi%2Fqueue%2Fv1%2Ftask%2FBaIMAbGZR_SsgHYyUAWA0g%2Fruns%2F0%2Fartifacts%2Fpublic%2Flogs%2Flive.log#L37 After: https://community-tc.services.mozilla.com/tasks/L77FVIkURm6XiP96FK3JMg/runs/0/logs/https%3A%2F%2Fcommunity-tc.services.mozilla.com%2Fapi%2Fqueue%2Fv1%2Ftask%2FL77FVIkURm6XiP96FK3JMg%2Fruns%2F0%2Fartifacts%2Fpublic%2Flogs%2Flive.log#L24 Note: this is NOT covered by unit tests.
PR #19401 dropped the --checkout flag to run_tc.py for jobs triggered by master pushes. Luckily, there is a new assertion in place that has caught the bug. Examples: Before: https://community-tc.services.mozilla.com/tasks/BaIMAbGZR_SsgHYyUAWA0g/runs/0/logs/https%3A%2F%2Fcommunity-tc.services.mozilla.com%2Fapi%2Fqueue%2Fv1%2Ftask%2FBaIMAbGZR_SsgHYyUAWA0g%2Fruns%2F0%2Fartifacts%2Fpublic%2Flogs%2Flive.log#L37 After: https://community-tc.services.mozilla.com/tasks/L77FVIkURm6XiP96FK3JMg/runs/0/logs/https%3A%2F%2Fcommunity-tc.services.mozilla.com%2Fapi%2Fqueue%2Fv1%2Ftask%2FL77FVIkURm6XiP96FK3JMg%2Fruns%2F0%2Fartifacts%2Fpublic%2Flogs%2Flive.log#L24 Note: this is NOT covered by unit tests.
This replaces the current scheme in which all tasks are specified in the
.taskcluster.yml
file with a setup in which only an initial "decision" task is specified in that file. The job of the decision task is to examine the event that caused it to be scheduled and the corresponding changes (if any) and select an appropriate set of jobs to run.Compared to the previous setup of having a single set of tasks this provides some new features:
There are also various things that now become possible that previously were hard to implement. For example we could invent a
tc-try:<jobs>
syntax to allow trying specific master runs on a PR without having to push to thetriggers/
branches.The current state of the feature is that tasks are described in a custom YAML format file in
tools/ci/tasks/test.yml
(there is some intent to allow using multiple tasks in the future). The format of this file and processing model is described intools/ci/README.md
. The setup has been verified on thejgraham/web-platform-tests
fork of this repo.One problem with landing this is that taskcluster always reads the
.taskcluster.yml
from the branch head, whereas PR tests are run on the merge of the base branch with the PR head. This means that some care is required not to break anything in such merges, or alternatively to rebase all PRs once the change lands.