Skip to content

Support integration branch bisection for Fenix (Bug 1857026)#2154

Open
moztcampbell wants to merge 6 commits intomozilla:mainfrom
moztcampbell:fenix_integ
Open

Support integration branch bisection for Fenix (Bug 1857026)#2154
moztcampbell wants to merge 6 commits intomozilla:mainfrom
moztcampbell:fenix_integ

Conversation

@moztcampbell
Copy link
Contributor

This improves support of Fenix and Focus by supporting bisection without the presence of build-info txt files on archive.mozilla.org. Instead of the text files, I use the existing JsonPushes modules to determine changeset based on build timestamp extracted from path names on archive.mozilla.org. With some small fixes to the FenixConfig, it is easy to support the Integration mixin and get proper pushlog support.

The current fenix builds use taskcluster routes called 'nightly' or 'nightly-simulation' that are roughly what we'd consider to be 'shippable' builds on desktop.

@moztcampbell moztcampbell force-pushed the fenix_integ branch 6 times, most recently from db2e379 to 6a5463a Compare February 2, 2026 16:57
@moztcampbell
Copy link
Contributor Author

I think you are right that I have misplaced the patch that has FenixIntegrationConfigMixin....

@moztcampbell
Copy link
Contributor Author

In the second patch in stack, I introduce FetchInfo types as helpers to the NightlyInfoFetcher and allow the fetch_configs to control which variant to use. This clarifies the fetch_configs that don't use an changeset resolution for nightlies, and the later patches in stack introduce the pushlog-based version.
I still maintain the call to json-pushes distinct from the IntegrationHandler since resolving in NightlyHandler means I get push range urls while bisecting the nightlies before the IntegrationHandler actually kicks off.
Feedback welcome on the fetch_configs interfaces. I have them return a class to control the FetchInfo type, but maybe there are better approaches.

@moztcampbell
Copy link
Contributor Author

Here is my complete stack with more testing and more bug fixes.

  • I've broken this down into a stack of patches that each pass tests
  • This has the FetchInfo/TxtFetchInfo/PushlogFetchInfo refactor so that a fetch config can specify which to use
  • This added a few more tests for the NightlyInfoFetcher for the fenix case
  • I changed how mixins are inherited to be at start of list since I was hitting MRO issues trying to override methods and these seems consistent with Python recommendations as best I can tell
  • The FenixIntegrationConfig is now included ends up being simplified
  • I've added more internal tests and done more manual testing of this version
  • I ensured that even without integration-bisection that the nightly bisection is able to generate the correct pushlogs

@moztcampbell moztcampbell marked this pull request as ready for review February 10, 2026 17:24
To allow configs that don't target "opt", use the first build type in the
list as the default. Correct some minor test expectations.
The "nightly_repo" for these should be the VCS target which is mozilla-central,
while the "nightly_base_repo_name" can name used by archive.mozilla.org. Also
remove the arch_regex_bits variable which isn't helping.
The `has_build_info` property is set to False, but a `get_nightly_info_url`
was not provided. Fix this and add a test case.
Add `ArchiveBuildUrls` and `ChangesetInfo` types to refactor the
`NightlyInfoFetcher` so that the config can control how changeset is resolved
instead of only using the .txt file mechanism. The config now provides a
`get_nightly_changeset` method that examines build URLs scraped from server and
then computes the corresponding changeset/repo if possible.

The `has_build_info` property is also removed and instead we rely on a
`get_nightly_info_url` method providing a non-default value.
The Fenix nightlies on archive.mozilla.org don't contain the usual build info
txt files. As an alternative, use the hg.mozilla.org json-pushes API to look
up based on buildid (datetime).

Add a new interface to JsonPushes to look up the push at a specific timestamp
rather than just a range of dates.
Set the name of the build type to "shippable" since the builds are all PGO. Note
that the task names for Fenix call themselved 'nightly-simulation' but the intent
is the same as 'shippable'.

This also adds support for Focus, but that is less valuable since we don't
schedule compatible builds very often.
@moztcampbell
Copy link
Contributor Author

I did another pass at this and replaced FetchInfo I was adding with ArchiveBuildUrls and ChangesetInfo to reflect the two stages they are generated. This also made it easier to avoid passing a class around and instead using a mixin on the fetch config to control how the ChangesetInfo is computed.
In the process of doing this I discovered a new bug in the thunderbird-l10n builds where they weren't finding the text files even though they were partially configured for them.

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