-
Notifications
You must be signed in to change notification settings - Fork 5
TODO list to make this happen #1
Comments
We might be able to utilize the github-bot's machine for this, I believe it still has a bunch of capacity still, so we won't need new infrastructure donations |
@maclover7 I'd be more comfortable if we use some sort of container on the machine and have something to do the orchestration. I am not sure how powerful the machine is so it may just be just a bunch of overhead to use orchestration, we should also try estimating the workload based on the velocity of the project. |
I'd be okay with this. |
Option 2 works, the only issue is that PRs by several authors would not count towards contribution of other authors. |
I already hinted to @Trott and @joyeecheung that I am working on a prototype. DesignThe current design works like this:
The task queue is processed as a regular queue, so in FIFO mode. For each task:
If one or more tests failed, the On commit mappingIn the current prototype, the commit mapping describes
The final commits are generated by iterating over the output commits and for each output commit, cherry-pick the input commits that are mapped to the respective output commit in their original order. Squashing and commit-message editing are performed at the same time, see implementation notes. There should be reasonable defaults for the commit mapping property, e.g. "squash all" or "keep all". This is the structure I am using to describe tasks:
Implementation notesThis design allows some cool things:
I am trying to keep this design as modular as possible, e.g. checks (before starting the task) and tests (after starting the task) should be customizable. The same applies to processing metadata and formatting the commit message. It will definitely take me some time to even have a presentable prototype, but I will try. |
Also, I think it would be cool to have both a web interface and a CLI. |
@benjamingr If the commits can be submitted in separate PRs, then they should. If they can't, then since we require each commit must be able to pass the test, they have to be squashed anyway. Also we can use the But personally I prefer to force everybody split commits and file separate PRs if possible, even if I sometimes don't want to do that myself when I am feeling lazy. It helps the backporters to minimize the changes between master and release branches as well, especially when it comes to refactoring/cleanup PRs. |
Just noting for posterity that there is prior work from the build WG on this issue: nodejs/build#705 |
And that was not the first attempt to... I want to point out that information fragmentation is a huge problem with the org. I'm not sure why we need a new repo for this task. IMHO it only exacerbates the problem. I move to close this repo and return the conversation to the |
P.S. There is substantial work already done in the ghprb-plugin. |
We should probably come to an agreement before I or anyone else puts a lot of effort into this. |
@refack I think with the current status of CI building the queue on top of successful CI runs would not be very viable for now? That was also what blocked the original issue. I am fine with moving this back to build or continuing the discussion here, but IMO using a separate repo would reduce the noise when we are still figuring out the protocol e.g. regarding rebasing. @maclover7 ‘s Jenkins job mentioned in that issue seems to be a good alternative as well, but we may need to be careful with conflicts. Do you still have that around? |
@refack @maclover7 @tniessen Or, if you prefer, we can put this back on the build meeting agenda and look at the prior efforts and the current status of things before moving forward? |
..or, since the agenda of the build meeting this week seems pretty packed, we can set up a doodle for a separate meeting, just do an overview of existing efforts, summarize the viable solutions so far, and make a concrete plan with assignees to make it happen? |
(I'm using this as a meta issue ;) Any way I see it a commit queue will require a test run, so the longest (and most complex) part of the work will be done on Jenkins, so ... IMHO the fastest way to achieve a CQ is to use a hybrid solution. There are part of the process that are Some added benefit of building this on top of Jenkins is that there is a lot of prior art, and even some outsourcers that develop for Jenkins. For example I just found this missing piece, a "wait for user input" stage. It seems like this could be used to take a "commit mapping" declaration. |
I'd like to get this moving. Any ideas/suggestions for how to do that? If I tried to set up a meeting for this, who would be interested in participating? |
The last time we discussed about this in a build sub-meeting, we agreed the easiest way to get this working is to set up a Jenkins job that squash everything and land it, then explore the other more sophisticated options. minutes is in https://github.com/nodejs/build/blob/master/doc/meetings/project-meeting-2018-06-19.md |
I am :) |
Me too. |
FYI, a Jenkins job to merge commits after testing, with meta-data tagging of each commit, had already been implemented: https://ci.nodejs.org/view/All/job/node-accept-pull-request/. There was to be some documentation in the wiki, but that seems to have been moved or deleted. |
Wiki archive: https://github.com/nodejs/wiki-archive |
I'd like to get this moving again.
|
I'm on the "not much time to spare" side of things. I'd really like to see this happen (I was thinking about it this week actually) and I can try to help out but regular meetings aren't an option for me right now. Using GH Actions and moving it to the Build WG are both good ideas, IMO. |
Thanks for picking this up again, @Trott . I think a GitHub action sounds like a good way to go now, considering the CI is in a relatively good shape these days. Moving it to the build WG & have a call about this sounds good as well. On the other hand the top of the list in the OP should already be addressed by nodejs/node-core-utils#366 |
Unfortunately I don't have time to work on this, but if someone is interested in revamping the old Jenkins job and has questions I'd be happy to answer what I can. |
I forgot that this repo exists until I woke up to notifications this morning. I wanted to add that I've been taking part in the GitHub maintainer feedback group, and have asked for a more official solution to a commit queue from GitHub. I have no idea if it will end up being implemented, or if the implementation will match our needs exactly, but it is at least on their radar. cc: @bdougie |
@Trott, @sam-github is AIX still a problematic platform or is it something like the length of time the run takes? Just want to understand why it would be excluded from re-runs? |
If we're doing this as a GitHub Action and not as a Jenkins thing, AIX isn't available. My idea is that a first (and maybe last) step would be to not bother to try to automate anything with Jenkins. So a manually-started passing Jenkins run is still a prerequisite. But the last-minute check-before-landing-that-the-ground-hasn't-shifted-under-us-in-the-master-branch to see that the tests are still passing...that would be only on platforms that GitHub Actions can easily automate. So, we'd skip AIX (and Raspberry Pi and SmartOS and a lot of others) in that last-minute step. We don't do the last-minute test on anything right now so doing it on only a few things as a smoke test is still an improvement. |
I am on the same page as @bnoordhuis
|
I'm interested in helping as well and I agree a mvp with Actions is likely the best approach. One thing to be aware though: Actions have limited scope when triggered in a pull request from a fork. Not sure if this is true only for pushes, or for any events. If it's only pushes, we could start with an action that parses comments from collaborators and merge based on that. Or trigger when a label is added. |
@Trott got it, just wanted to make sure there was not something we should look into. |
@Trott I can certainly try to find some time to help with the github action approach. |
Talked about this in Build WG meeting today and there was consensus to move this to the build repo for visibility. I'm going to close this, open an issue in the build repo, and also open an issue in the admin repo to archive this repository. |
Off the top of my head:
git-node land
--autosquash
feature of git and ask everybody to use--fixup
or--squash
when they create commits that should be squashedgit-node
to store more metadata tracking PRs and queued jobsFor reference:
https://dev.chromium.org/developers/testing/commit-queue
https://dev.chromium.org/developers/testing/commit-queue/design
Added:
The text was updated successfully, but these errors were encountered: