Create Gecko Decision tasks for both hgmo and Github
Categories
(Release Engineering :: Firefox-CI Administration, task)
Tracking
(Not tracked)
People
(Reporter: ahal, Assigned: ahal)
References
(Blocks 1 open bug)
Details
Attachments
(9 files, 1 obsolete file)
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review |
Because the Gecko CI migration will be very large, we'll want to do the migration piece-meal rather than all at once. In order to accomplish this, we'll need Decision tasks that run both via the traditional hgmo pulse events, as well as the taskcluster-github events.
Since this support will only be needed transitionally, I plan to setup .taskcluster.yml to be completely bi-modal. I.e, I will create two entirely separate task definitions that don't share any logic with one another.
| Assignee | ||
Updated•3 months ago
|
| Assignee | ||
Comment 1•3 months ago
|
||
I don't think catching UnicodeDecodeError is necessary, but this exactly
matches upstream Taskgraph, so will make consolidating a bit easier in
the future.
| Assignee | ||
Comment 2•3 months ago
|
||
| Assignee | ||
Comment 3•3 months ago
|
||
We'll soon be supporting running Decision tasks against Github in
addition to hg.mozilla.org. Also upstream Taskgraph doesn't have this
check at all, so just remove it rather than adjusting the regex.
Updated•3 months ago
|
Comment 5•3 months ago
|
||
| bugherder | ||
| Assignee | ||
Comment 6•3 months ago
|
||
It's possible for output of git remote -v to both contain less than
three parts and more than three parts.
| Assignee | ||
Comment 7•3 months ago
|
||
This change:
- Adds the "firefox" and "staging-firefox" projects
- Adds filter_for_git_branch to the default filters (no-op on hg)
- Implements a new filter_for_repo_type in the default filters
(defaults to ["hg"]). Until tasks start setting this attribute to
include "git", nothing will run on Github based graphs.
| Assignee | ||
Comment 8•3 months ago
|
||
| Assignee | ||
Comment 9•3 months ago
|
||
The Gecko version of run-task is specific to Mercurial. Now that we're
going to start running Gecko CI against Github repos, they will be using
the upstream version of run-task. This version of run-task expects a
REPOSITORIES env to be set.
This patch makes the job transforms match the upstream run ones a
bit more closely, which involves defining taskgraph.repositories in
config.yml.
Additionally this sets a few extra env variables that the run
transforms were setting, just for additional parity.
Comment 10•3 months ago
|
||
Comment 11•3 months ago
|
||
| bugherder | ||
Comment 12•3 months ago
|
||
Comment 13•3 months ago
|
||
| bugherder | ||
Comment 14•3 months ago
|
||
Hey there folks,
Do you have any advice on how to keep Thunderbird happy during these changes?
| Assignee | ||
Comment 15•3 months ago
|
||
Hey Toby, we gecko_taskgraph developers tend to break comm a lot, personally I can't even count how many times I've done it. The issue is that comm is basically using gecko_taskgraph as an unpinned dependency. At the same time, us gecko_taskgraph developers have no easy way to test our changes (and even if we did, worrying about keeping comm green isn't something we have the time or mandate to do).
I highly recommend that comm developers find a way to refactor their CI setup such that comm no longer depends on gecko_taskgraph this way. I haven't thought through everything, but here is what I would do if I were you:
- Switch your Decision task to use the Decision image from Taskgraph
- Invoke Taskgraph directly rather than going through
mach - Hard fork any transforms / logic you need from
gecko_taskgraphintocomm_taskgraphand stop importinggecko_taskgraphentirely.
I'll be frank, this suggestion is not a trivial amount of work and there are probably all sorts of problems that will arise as you work through it. But until someone does the hard work of fixing comm's CI setup, we're going to carry on breaking you over and over :(
There is a bit of a time factor here as well, because once we're fully switched over to Git, we're going to be dropping support for Mercurial. This means that you'll either need to migrate to Git at the same time, or you'll be hard forking out of necessity anyway. So imo might as well do it ahead of time while there's not a ton of time pressure.
If this is something you want to tackle, I'm happy to provide guidance.
Comment 16•2 months ago
|
||
Hey Andrew,
Thanks for the insight. I'm not sure how much it would benefit us to hard fork gecko_taskgraph. That gets us into a larger issue of maintaining a fork that needs to keep up with upstream Firefox.
Thunderbird is built as an extension of Firefox. We depend on source code, CI, mach commands, etc from Firefox. For better or worse, we're a tightly integrated downstream user of Firefox in several areas, gecko_taskgraph being one of them. The dependency of Thunderbird on Firefox is all an unpinned dependency. Our sheriffs and others spend a lot of time fixing breakage when we pin to new versions of Thunderbird, and that's just the nature of the beast.
We can handle breakages. You don't need to keep comm green. However, I would like to ask that you consider us downstream when making code changes.
We are in the early stages of git migration. Hopefully you won't be dropping support for Mercurial before we migrate.
Thanks,
Corey
| Assignee | ||
Comment 17•2 months ago
•
|
||
That might be true overall, but I must insist you are mistaken when it comes to gecko_taskgraph, it doesn't have to be like this :)
What you should be depending on are:
https://github.com/taskcluster/taskgraph
https://github.com/mozilla-releng/mozilla-taskgraph
There we take great pains to follow semantic versioning and avoid breaking consumers. Those repos are designed to be used across projects, and you can pin their dependencies to a specific version, so you can deal with breakage on your own terms.
I've scanned the tasks in your repo, and I see you use a lot of similar kinds and are directly using a lot of the gecko_taskgraph transforms, especially for release tasks.
The piece you might be missing is that the grand vision is for mozilla-taskgraph to house all the common release type tasks, like signing, beetmover, balrog, etc. These are probably less Gecko-specific than you think. Other projects like mozilla-vpn-client also have transforms that deal with stuff like this. So my suggestion if you want to both stop depending on Gecko and not be responsible for maintaining it in the long term? Move it into mozilla-taskgraph instead of hard forking. I think you'll find I'll be eager to help, as you'll be helping us create transforms that benefit everyone.
I totally get that this isn't trivial and you have very limited resources to work on it. The good news, is that this is something that can be done gradually over time. So my goal for now is to try and convince you that this is the right approach and help you get started down this path. Then over the course of years, we slowly move logic into either comm_taskgraph or mozilla-taskgraph (or even the core taskgraph if it's generic enough).
p.s You can still use transforms from gecko_taskgraph, even if you don't use it as the entrypoint (i.e follow steps 1 and 2 that I outlined in comment 15). This alone should drastically cut back on the amount of breakage you receive from us. So even if you don't want to do any forking, I recommend you at least take those steps.
| Assignee | ||
Comment 18•2 months ago
•
|
||
We are in the early stages of git migration. Hopefully you won't be dropping support for Mercurial before we migrate.
We'll definitely keep supporting Mercurial in taskcluster/taskgraph until the last fxci repo is migrated off of Mercurial. And I think we can support it for a "reasonable" amount of time in gecko_taskgraph as well (I don't know what reasonable is yet). But if we ever get to a point where Gecko is fully off of Mercurial but comm isn't and there's no end in sight, then at that point hard forking Mercurial only stuff into comm taskgraph feels like it'll be the way to go.
| Assignee | ||
Comment 19•2 months ago
|
||
| Assignee | ||
Comment 20•2 months ago
|
||
Comment 21•2 months ago
|
||
Wow, thanks so much for taking the time to help on this. Truly appreciated
| Assignee | ||
Comment 22•2 months ago
|
||
Comment 23•2 months ago
|
||
I've scanned the tasks in your repo, and I see you use a lot of similar kinds and are directly using a lot of the
gecko_taskgraphtransforms, especially for release tasks.
Yes, we do that for code re-use since we're built as an extension of firefox and use a lot of the same tasks.
The piece you might be missing is that the grand vision is for
mozilla-taskgraphto house all the common release type tasks, like signing, beetmover, balrog, etc. These are probably less Gecko-specific than you think. Other projects like mozilla-vpn-client also have transforms that deal with stuff like this. So my suggestion if you want to both stop depending on Gecko and not be responsible for maintaining it in the long term? Move it intomozilla-taskgraphinstead of hard forking. I think you'll find I'll be eager to help, as you'll be helping us create transforms that benefit everyone.
mozilla-taskgraph seems like a good approach for code re-use among projects. Are you in the process or planning to move tasks from gecko-taskgraph to mozilla-taskgraph, or are you suggesting we should do that?
Comment 24•2 months ago
|
||
Comment 25•2 months ago
|
||
Comment 26•2 months ago
|
||
Backed out Add test parameters changeset for causing py failures
Backout link: https://hg.mozilla.org/integration/autoland/rev/75d400f797850981581308f10853f941b11aef84
| Assignee | ||
Comment 27•2 months ago
|
||
I wasn't able to reproduce locally, the commit that caused the failure isn't necessary at this time, so I'll likely abandon the revision for now and attempt to add this parameter file again once we have real ones we can pull from firefox-main using the update script.
Updated•2 months ago
|
| Assignee | ||
Updated•2 months ago
|
| Assignee | ||
Comment 28•2 months ago
|
||
mozilla-taskgraph seems like a good approach for code re-use among projects. Are you in the process or planning to move tasks from gecko-taskgraph to mozilla-taskgraph, or are you suggesting we should do that?
Sorry missed this. I'm suggesting you do that. This is something I push on from time to time when I'm working on something and see an opportunity to advance it. But it's never going to be a priority from leadership, so there's only so much time I can spend doing it unfortunately :(
Description
•