Page MenuHomePhabricator

Opt-in Differential for projects needing code review but not Jenkins/Zuul for continuous integration
Closed, ResolvedPublic

Description

Background

In T560#1095147, @Qgil wrote:

Never surrender... :)

On Fri, Feb 20, 2015 at 5:35 PM, Chad Horohoe wrote in an email:

Step 1 should be doing projects that don't even need Gerrit or Jenkins. Then we can focus on the Arc-Differential bits right without any other moving pieces.

What about a demo-able project for the Wikimedia-Hackathon-2015 consisting Pywikibot code review in Phabricator? Could be a test in phab-01 or the real deal in production, depending on how good is the implementation and how on board the Pywikibot folks are.

If @mmodell (Wikimedia Phabricator maintainer) and @jayvdb (Pywikibot maintainer) are also in, I don't think we require anything else to try this out in Lyon. Other #Code-Review interested parties will be either in Lyon or available online, busy with other things but probably able to answer and help on specific bits during the event. It is very likely that more Pywikibot folks will be at the event. It is going to be a very good environment for ad-hoc technical & social discussions and decisions in the Phabricator and Pywikibot sides.

Also, if we define what "projects that don't even need Gerrit or Jenkins" means, we might get other projects during the weekend from the pool of bots, Tool Labs, etc, that will be at the event.

No matter at which point we leave the work at the end of the hackathon, we could continue polishing after the event, opening the door to all these non-Jenkins projects, and starting to build a critical mass of projects using Differential for code review.

This task is marked as stretch goal at T93770: Engineering Community quarterly goals for April-June 2015

Getting Started with Differential

In order to access the Wikimedia instance of Differential, all that is required is that you join the Differential-Beta project.

Before you can actually make use of Differential in a meaningful way, there are a few more things that must be in place:

  • You need to set up Arcanist locally in order to submit changes to Differential.
  • Your repository needs to be mirrored in phabricator before it'll work with Differential.
    • To verify, be sure that you can find the repository listed in Diffusion.
    • If it's missing, ask @mmodell (IRC: twentyafterfour) or @demon (IRC: ^d) to set it up for you.

Related Objects

StatusSubtypeAssignedTask
ResolvedDzahn
Resolved Cmjohnson
ResolvedDzahn
ResolvedDanny_B
ResolvedPaladox
OpenDzahn
Resolved demon
Resolved demon
ResolvedPaladox
ResolvedNemo_bis
Resolved demon
ResolvedPaladox
ResolvedKrenair
Resolved mmodell
InvalidNone
DeclinedNone
Resolved demon
InvalidNone
InvalidNone
ResolvedQgil
DeclinedNone
DuplicateNone
Resolvedgreg
Resolvedgreg

Event Timeline

Qgil raised the priority of this task from to Low.
Qgil updated the task description. (Show Details)
Qgil added subscribers: Ricordisamoa, JanZerebecki, jayvdb and 7 others.

The title only mentions Jenkins/Zuul. Is there any offer of CI included in this step of our Differential installation?

If there is a git repo with code someone wants to run but no CI then that is a bug. (I know they exists, but why would you want to prevent basic syntax checking?)

IMHO we should not introduce Differential by any means without considering the losses. And not move code into a place where quality improvements are prevented. And only add a new tool for the same task if we retire one other. Please clarify if/how you disagree.

The title only mentions Jenkins/Zuul. Is there any offer of CI included in this step of our Differential installation?

We're waiting for Harbormaster in Phabricator. Also see some of the discussion comments in T89714.

Pywikibot really needs its integration with integrated CI for work by new contributors, however we have extensive tests run by travis and many of the core devs push changes to github/travis in addition to submitting to gerrit, and we push complex gerrit changes to github/travis before +2 in gerrit to help show hard to see unexpected problems.

So some core devs could use Differential without CI and utilise travis for CI, provided gerrit remains an option for some contributors. Not sure if gerrit and differential can play nice together on the same master. If not we could look at other approaches, like using differential only for a new pwb3 branch while gerrit is used for the current pwb2 master which is close to being released.

differential doesn't use git directly so it can easily co-exist with other systems. And since phabricator can track git repos hosted elsewhere then you just point phab at the repo, set up arcanist locally and start submitting diffs.

there is also http://www.dctrwatson.com/2013/01/jenkins-and-phabricator/ -> it's pretty easy to hook arcanist up to jenkins bypassing zuul. It might be a valid way to set things up for a alpha-stage differential experiment.

Ya. Looks easy and good enough for our needs.

we could also look at pushing review changesets to github branches, which would trigger our travis testsuite.
https://secure.phabricator.com/T4482

To use differential please join the Differential-Beta project.

I did and there is no Application named Differential showing up for me.

You do not have permission to view this object.
Members of the project "Gerrit-Migration" can take this action.

@JanZerebecki: Sorry I had it set up incorrectly. Would you mind giving it another try?

Works: Now it shows up under Applications and I can access it.

Please confirm and promote this activity by assigning it to its owner, listing it or scheduling it at the Hackathon wiki page and by placing it in the right column at #Wikimania-Hackathon-2015. Thank you!

@mmodell are you or anyone you know planning to work on this task at Wikimania? (I'm not going this year)

greg claimed this task.
greg subscribed.

This is done. Differential is available in an opt-in basis. RelEng is using it for Scap work (see: https://phabricator.wikimedia.org/differential/query/Bl4g_4o5nAT8/ )

(If there's a desire to have a place where people can ask to do this for themselves, that should be on-wiki under Phabricator/ somewhere, not this task.)