We use Mercurial, and it seems that Mercurial support in Arcanist/Phabricator kinda sucks and tries very hard to imitate GitFlow, which is totally not how our repository works. Thus, I might be asking about some rather unorthodox Phabricator usage, so please bear with me and don’t hesitate to suggest alternative solutions (within a reasonable, so no VCS migration).
We have a Jenkins job, say
check-build - it simply checks that the project is compiled successfully, produces all the needed binaries and all the tests succeed. It operates on Differential diff ID to
arc patch changes from a revision and check they won’t break anything too hard.
We also have couple other Jenkins jobs, say
build-linux that perform a “full build” with a lot of additional steps, like pulling certificates, signing stuff, preparing installers/RPM packages etc. For this job user can also specify a diff ID, so they would get a “custom” build with their changes that are not yet pushed upstream.
We have a Harbormaster Build plan to run
check-build and a Herald rule to trigger it on any incoming revisions (ideally; right now it is tested only on my revisions). I would add to it some limitation like “incoming revisions with X status”, with X being something like
not 'Changes Planned' - so people would simply run
arc diff --plan-changes, but maybe there would be a better idea.
Is there a way to somehow differ revisions (same project, same development team), so if someone creates one to perform a custom build from their revision, there would be only a single Jenkins job run (full build), without additional compile checks? Can it be done via just
arc diff with some additional args?
If you wonder, why in the world we decided to use Differential to produce full builds - there is idea to eventually run
check-build on literally anything, then store the produced artifacts somewhere, and later reuse them in
edit: it seems that
--plan-changes won’t work, because Arcanist seemingly first creates the revision, and then changes its status to
Changes planned - and this small window is enough for Herald to trigger the build…