Conversation
coreycb
left a comment
There was a problem hiding this comment.
This is great, thanks for putting it together. I added some comments. I don't fully understand this flow so keep that in mind. ie. I may be wrong but I tried. :)
| when: [{hour: 11, minute: 0}] | ||
| ``` | ||
|
|
||
| ## Task decision |
There was a problem hiding this comment.
This should probably be "Decision Task"
| --trust-domain comm \ | ||
| --branch default | ||
| ``` | ||
|
|
There was a problem hiding this comment.
It might be nice to also add some details about what tasks are selected and how for the nightly_build. It looks like we re-use https://searchfox.org/firefox-main/source/taskcluster/gecko_taskgraph/target_tasks.py#999 and comm_taskgraph/decision.py is involved.
For task selection it looks like that happens around here: https://searchfox.org/firefox-main/source/taskcluster/gecko_taskgraph/target_tasks.py#899
Which in comm/taskcluster/kinds should match up with:
build/macosx.yml: shippable: true
build/windows.yml: shippable: true
build/windows.yml: shippable: true
build/linux.yml: shippable: true
One more thing that would be nice to document is the flow of mach taskgraph decision. This is from claude code, so would need verifying but something along these lines:
- mach taskgraph decision is invoked by the decision task with --target-tasks-method nightly_desktop --tasks-for cron
- taskgraph.decision.taskgraph_decision() (base taskgraph library) starts the process, calling get_decision_parameters() to build the parameters dict from CLI options — including setting target_tasks_method: nightly_desktop
- taskgraph.decision.get_decision_parameters() then checks graph_config["taskgraph"]["decision-parameters"] (line 263-266). For Thunderbird, config.yml points this to comm_taskgraph.decision:get_decision_parameters, so it calls into comm's decision.py, which:
- Sets project defaults from PER_PROJECT_PARAMETERS (comm-central defaults to comm_central_tasks)
- Overrides target_tasks_method back to nightly_desktop from the CLI arg (line 154-156)
- Since tasks_for == "cron", looks up nightly_desktop in CRON_OPTIONS and populates existing_tasks and release_history - Back in the base library, TaskGraphGenerator is created with the final parameters. When tgg.target_task_set is accessed, it looks up target_tasks_method (nightly_desktop) in the registry and calls gecko_taskgraph.target_tasks.target_tasks_nightly_desktop() to get the list of tasks to schedule
- The resulting task graph is optimized, written as artifacts, and tasks are created via the TC API
There was a problem hiding this comment.
I've added a detailed flow on how the nightly decision task is handled, within the mach taskgraph decision section. Item number 3 is the one I relied more on claude to understand, but I have dug into the code and validated the information to the best of my knowledge.
This is fairly detailed — happy to pare it down if you'd prefer a higher-level overview. Just let me know.
|
This is awesome. Thanks for putting it together. |
Overview
I ended up going on a bit of a rabbit hole trying to understand how nightly releases work for desktop. This PR adds some information that I found along the way about the process.
It includes some information that can easily be found online, however I believe it also contains little bits of information that were not so trivial to find, that I think is helpful to have documented.
I also took the liberty of moving the existing pages related to releases into a
releasesdirectory. Let me know if you feel against it and I can remove those changes.Thanks.