Cool, So is this intended as a Branch API <https://github.com/jenkinsci/branch-api-plugin/blob/master/docs/user.adoc> implementation? Something a la GitHub Branch Source Plugin <https://wiki.jenkins.io/display/JENKINS/GitHub+Branch+Source+Plugin>? Which is what my mind goes to when reading things like "Out-of-the-box integration with Gerrit validation workflow in the pipeline". >From a quick reading I'm not sure that is what you are planning, it seems like something else?
The gerrit-branch-source-plugin is something that has been on my todo list for over two years and I haven't been able to free enough cycles to implement it yet. So getting that ghost off my chest would be nice ;) /B 2017-08-18 13:44 GMT+02:00 Luca Milanesio <[email protected]>: > > On 18 Aug 2017, at 12:19, Gustaf Lundh <[email protected]> wrote: > > Cool stuff! Really looking forward to try it out! > > > - Stability: stream-events are based on SSH, which isn't scalable, > reliable against downtime, etc. > > Please note: The Gerrit Trigger plugin does support consuming events from > rabbit-mq and also from the Gerrit event-log plugin. > > > Yes, with RabbitMQ becomes much more reliable and scalable ... but it is > *a lot* of extra complexity and infrastructure :-( > Additionally, event-log plugin stores all the events on the Gerrit DB, > which is *again* a lot of extra overhead :-(( > > > I think it is also worth nothing that Gerrit Trigger is push based and not > pull based. Which makes quite a difference when you have a great amount of > projects. > > > My new plugin is push based as well, based on WebHooks. > But I agree with you, for a very large large scale setup, the Gerrit > Trigger Plugin remains the 1st choice and the extra overhead of > infrastructure is justified by the size of the installation. > For medium-small scale setups, it is way too complex for the people to > setup and manage, based from the feedback I got from my clients :-( > > > /Gustaf > > > On Friday, August 18, 2017 at 11:04:41 AM UTC+2, lucamilanesio wrote: >> >> Hi Gerrit and Jenkins Community, >> after over two years of iterations and improvements of the Gerrit CI >> workflow (https://gerrit-ci.gerritforge.com), I have decided that is >> about time to extract the logic of our workflow and make it available as a >> brand-new Jenkins plugin! >> >> *Why?* >> I wanted to use the Gerrit CI validation workflow with potentially any >> project, including Gerrit plugins or anybody else wanting to adopt it. >> I could just "copy & paste" our Groovy workflow, however, that does not >> seem a sensible and long-term approach. >> I wanted to have "something more" than a pure triggering mechanism: I >> wanted to extend the power of Jenkisfile with the Gerrit review workflow >> verbs. >> >> *Why not?* >> Why should I write yet another Gerrit/Jenkins plugin? Isn't Gerrit >> Trigger Plugin (https://wiki.jenkins.io/display/JENKINS/Gerrit+Trigger) >> enough? >> We couldn't use it against gerrit-review.googlesource.com because stream >> events are just not accessible. >> >> There are unresolved issues about: >> - Stability: stream-events are based on SSH, which isn't scalable, >> reliable against downtime, etc. >> - Usability: at every JenkinsWorld conference people still come to me >> asking "how do I setup correct the Gerrit Trigger plugin"? >> - Integration: using it inside a JenkinsFile isn't that straightforward >> and multi-branch projects aren't supported either >> >> *What would it be?* >> I will publish a new plugin named "Gerrit Pipeline Plugin." >> The new name indicates: >> - Deep integration with Jenkins Pipeline >> - Out-of-the-box integration with Gerrit validation workflow in the >> pipeline >> >> A simple example scripted Jenkinsfile would be: >> >> node { >> checkout scm >> >> gerrit.withServer("http://gerrit:8080/", "gerrit") { >> >> try { >> docker.image('gerritforge/play-sbt-8-jdk-alpine').inside { >> stage('Build') { >> sh 'sbt compile' >> } >> stage('Test') { >> sh 'sbt 'test' >> } >> } >> >> gerrit.review("Verified", 1, "It works !") >> } catch (e) { >> gerrit.review("Verified", -1, "Breaks the build ;-(") >> throw e >> } >> } >> } >> >> (Where: >> - https://gerrit-review.example.com would be the Gerrit URL >> - mycredentialsid would be the id of the credentials to access Gerrit) >> >> One key-aspect will be: stateless, configuration-less (apart from the >> credentials stored in Jenkins keychain) >> That means that multiple Jobs, multiple branches of the same Job, can >> have their own Gerrit integration defined and working out-of-the-box. >> >> No more people asking "how do I configure the Gerrit integration"? >> You'll just define a gerrit.withServer() { } and ... it will just work. >> >> *When?* >> I am planning to showcase the first prototype of the new plugin at the >> Jenkins World Conference in San Francisco inside my "Data-Driven Pipeline >> workshop." >> (https://jenkinsworld20162017.sched.com/event/APTd/data-driv >> en-pipeline-workshop-free) >> Shortly afterward, I will publish the plugin on the GerritForge's GitHub >> account and will start the integration process into the Jenkins CI >> organization. >> >> *Next steps?* >> A second iteration of the plugin would have a Declarative pipeline >> equivalent as well, which would require even less code required. >> A third iteration of the plugin would support BlueOcean as well, to have >> a fully UX-integrated experience. >> The goal is to have *Gerrit Code Review to be a 1st class citizen in the >> Jenkins ecosystem* :-) >> >> *So what happens to the Gerrit Trigger Plugin?* >> The new plugin is not going to replace the current Gerrit Trigger Plugin, >> but would rather represent an alternative to simpler scenarios when you >> just require a standard Jenkinsfile Gerrit validation workflow. For all the >> current users of the Gerrit Trigger Plugin things wouldn't change, unless >> they need a more Jenkisfile-integrated experience. >> >> Feedback? Like it? Hate it? Have your say :-) >> >> Luca. >> >> >> > -- > -- > To unsubscribe, email [email protected] > More info at http://groups.google.com/group/repo-discuss?hl=en > > --- > You received this message because you are subscribed to the Google Groups > "Repo and Gerrit Discussion" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > > > -- Robert Sandell *Software Engineer* *CloudBees Inc.* -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CALzHZS3gX-4cxFF%3DGonZ7sTWFgWqvkmzisC%2BMVuwLoaR1JcAdA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
