1
0
Fork 0

Extended documentation of status quo.

This commit is contained in:
Christian Kühnel 2020-03-13 16:57:37 +01:00
parent cc0058c17e
commit 5f4983f824

View file

@ -23,24 +23,48 @@ the builds from there.
If that works well, we can also use this to demonstrate the workflow of Github Pull Requests to the
LLVM community.
# current status
The script currently does:
* Get the latest 10 Revisions from Phabricator for testing.
* For each revision:
* Create a local git branch `phab-Dxxxxx`
* Create a local git branch `phab-diff-yyyyy` for every Diff of the Revision using the raw patch of each Diff.
* Layer the diffs on top of each other in the `phab-Dxxxxxx` branch.
* Push the `phab-Dxxxxxx` branch to the [LLVM fork](https://github.com/ChristianKuehnel/llvm-project).
* Create a [pull request](https://github.com/ChristianKuehnel/llvm-project/pulls) for each branch.
* The GitHub/Buildkite
[CI integration](https://buildkite.com/llvm-project/phabricator-pull-request-integration-prototype)
then triggers the builds for the PRs.
As this is a prototype, it currently has some shortcommings:
* I'm only looking at the 10 latest Revisions for testing.
* If a patch does not apply: just ignore it
* The Revision branches are always created from scratch, there is no incremental update.
* I run the script manually for testing, There are no automatic pull/push updates
# Work items
This is the list (and order) of the work items for this idea.
We will start with this on a fork of the LLVM repository running on my machine as cron job.
Cancel the effort if some thinks would not work or the community objects.
* [ ] For each Revision create a branch. Create a PR from that.
* [ ] Layer the diffs on top of each other in the git log.
* [x] For each Revision create a branch. Create a PR from that.
* [x] Layer the diffs on top of each other in the git log.
* [ ] Figure out what to do with chained Revisions.
* [ ] Find a way to copy the description and the comments from the Revision to the PR.
* [ ] Also sync Revisions that do not trigger Harbormaster at the moment and provide feedback as
well.
* [ ] Clean up old branches and PRs.
* [ ] Move service to the cloud, trigger it with every change on Phabricator.
* [ ] Find a scalable way to reports results back to Phabricator.
* [ ] Clean up old branches and PRs.
* [ ] Create pre-merge testing service to the cloud, trigger it with every change on Phabricator.
Also do regular full scans of Phabricator to catch everything lost in the triggers.
* [ ] Add more build machines to buildkite and move beta testers to new infrastructure.
* [ ] Move all pre-merge tests to new infrastructure.
* [ ] Find way to test new scripts/builders/configuration/... without annoying the users.
* [ ] Enable others to add more checks/builders as needed.
Optional:
* [ ] Also sync Revisions that do not trigger Harbormaster at the moment and provide feedback as
well.
* [ ] Find a way to copy the description and the comments from the Revision to the PR.
* [ ] Create branches and PRs on LLVM repository, allow people to click the "Merge" button on the PR,
reducing the manual work to land a patch.