Skip to content

Add desktop nightly release info and some refactor#3

Merged
coreycb merged 8 commits intomainfrom
releases
May 7, 2026
Merged

Add desktop nightly release info and some refactor#3
coreycb merged 8 commits intomainfrom
releases

Conversation

@kryoseu
Copy link
Copy Markdown
Member

@kryoseu kryoseu commented May 5, 2026

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 releases directory. Let me know if you feel against it and I can remove those changes.

Thanks.

Copy link
Copy Markdown
Collaborator

@coreycb coreycb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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. :)

Comment thread processes/releases/nightly/desktop.md Outdated
when: [{hour: 11, minute: 0}]
```

## Task decision
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should probably be "Decision Task"

Comment thread processes/releases/nightly/desktop.md
--trust-domain comm \
--branch default
```

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:

  1. mach taskgraph decision is invoked by the decision task with --target-tasks-method nightly_desktop --tasks-for cron
  2. 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
  3. 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
  4. 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
  5. The resulting task graph is optimized, written as artifacts, and tasks are created via the TC API

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@coreycb
Copy link
Copy Markdown
Collaborator

coreycb commented May 7, 2026

This is awesome. Thanks for putting it together.

@coreycb coreycb merged commit 7b22f82 into main May 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants