6 ms·
Can you make sure there is good API support for stacks? We use a custom merge queue and we want it to be able to land multiple PRs from a stack at once as sepa
by Game_Ender 2mo ago
Can you make sure there is good API support for stacks?
We use a custom merge queue and we want it to be able to land multiple PRs from a stack at once as separate PRs. Last I checked you had to land a single PR, rebase the stack, land the next and so on. This is very expensive in CI time (and wall clock time), vs simply testing part or all of a stack in parallel then declaring those merged. In essence a robot needs the ability to say “squash merge these 3 stacked PRs”, after the queue does its thing.
- sameenkarim 2mo agoYes that was one of our top priorities. For one, there's a fully public API for all stack operations. So if you don't want to use the `gh stack` CLI, you can build your own: https://docs.github.com/en/rest/pulls/stacks https://docs.github.com/en/rest/pulls/stacks For merging, we have an API but had to move it to a new async method: https://github.github.io/gh-stack/reference/merge-api/ https://github.github.io/gh-stack/reference/merge-api/ The legacy API was fully synchronous, and since stacks of multiple PRs can often take more than 10s (our global timeout), we had to move to async. We've had some folks already use this to integrate stacks into their merge queues. The great part is you can land multiple PRs in one atomic operation, and then there's one push to main with all your commits from multiple PRs. So instead of having to rerun the build/deploy for each, it can trigger for the last commit that contains all of the changes.
- masklinn 2mo agoIs there also a webhook? I don’t fancy busy-looping on dozens or hundreds of PRs for tools with large scopes of overview. Also what about external merges? Is there a way to sanely interact with stacks when merging locally or via external tooling?
- mattmatheson 2mo agoHey there - we worked with Sameen and the team at GitHub over the past month to get support for stacks in our Mergequeue: https://trunk.io/blog/trunk-merge-queue-now-supports-github-stacked-pull-requests https://trunk.io/blog/trunk-merge-queue-now-supports-github-... They do indeed have APIs you can use in your mergequeue, I'm happy to share notes on how we built it so you can add it to your mergequeue.
- masklinn 2mo agoDoes trunk use GitHub’s api to merge stacks, or does it do the integration internally / on its own?
- mattmatheson 2mo agoWe use GitHub's APIs. We did build a version before GitHub supported it, but it required using our credentials to push directly to the main branch. That wasn't acceptable to most of our customers, so we ended up not shipping it and waiting for GitHub support. Using the GitHub APIs means you still preserve history and commit messages they way people expect (merges through the queue and direct merges behave the same), and it lets users guarantee that the only code our mergequeue merges is the code that was in the PR.
- udave 2mo agolovely website animation :D
- mattmatheson 2mo agoThanks! :)