[Blue Ocean] New UX project for jenkins

363 views
Skip to first unread message

Michael Neale

unread,
May 26, 2016, 6:44:06 PM5/26/16
to Jenkins Developers

I just opened https://issues.jenkins-ci.org/browse/HOSTING-98 for the so-called "blueocean" plugin.


You may have heard this announced via the blog post https://jenkins.io//blog/2016/05/26/introducing-blue-ocean/. If not, I'll give you a few minutes

to have a read...


Just kidding, who has time for that, let me explain. No, there is too much, let me sum up:

https://www.youtube.com/watch?v=GZYhDMCOyww

(above is from the movie princess bride, more seriously, if you haven't seen this movie you really should, kind of urgently)


Blue Ocean aims to be a plugin (well, a few moving parts delivered as plugins) that provides an extensible "next gen" user experience. Jenkins GUI has been around for 10 years now, and can be hard to extend and modernise (many of us have tried).

Its initial focus is on "pipeline centric" and freestyle views for the busy developer, and is very much a work in progress.


The interesting bits for us developers:


Blue Ocean is based on ES6, Server Sent Events (realtime notifications), React.js for component model and gulp/npm build chain, but wired in via the already in use jenkins-js modules (this means there isn’t a need to be familiar with the whole js toolchain unless you want to be, and mvn install takes care of things normally).


Both client side (stuff in browser) and server side - are just Jenkins plugins. The server side uses the usual Jenkins web middleware (yes, stapler) and extensions/extension points.


A fair bit of head scratching was done to come up with an “<ExtensionPoint>” concept for blue ocean client side, however it was worth it as it means that plugins for the new UX can be delivered as normal Jenkins plugins but with js componentry. Jenkins serves up these plugins to the web browser so extension points in Blue Ocean pages can be fulfilled by any plugin offering those extensions (GUI extension points have names). This includes things like adding a new “route” for a new page to host a feature, or could be augmenting an existing page or component. A sample plugin and demo of it is here: https://github.com/cloudbees/blueocean-sample-pipeline-result-ext-plugin.


Extensions can be isolated in failure this way - so a bad bit of javascript doesn’t brick a whole page.


Blue Ocean when installed currently provides the new UX on the /blue top level route in Jenkins, so the classic GUI lives alongside it. The new GUI (markup, js) that is delivered via a fresh set of markup and JS bundles, so it doesn’t conflict with any existing GUI.


The UX model in blue ocean is more of a shift to what used to be called “client server” but is now a “single page app” (kind of), using pretty much standard React.js patterns (it is hoped that while React.js is the glue of blue ocean, plugin authors don’t have to be an expert in it, and could use something else to deliver their front end functionality). There is a server side API plugin called “blueocean-rest” which provides a http/REST-like api that helps drive the GUI (it too is extensible, but it just builds on stuff already in Jenkins) - it has a fairly neat README explaining the API as it is right now. You could describe this api as being a “BFF” pattern for the front end (see http://samnewman.io/patterns/architectural/bff/)



It’s still very early days obviously, but if you are interested take a look at https://github.com/cloudbees/blueocean (as soon as HOSTING ticket is resolved, development will move to the jenkinsci org’s fork of that repository). It’s a multi module project (blueocean-plugin is the aggregator). The “js-extensions” module is the middleware that makes the new ExtensionPoint stuff work.


There is also the https://github.com/cloudbees/jenkins-design-language repository (once again, will be forked into jenkinsci) which contains visual assets, reusable components and tries to codify a standard look/feel (what is a design language). One thing front end developers have found useful when building components is storybook.




If you are interested in talking about this, we are using #jenkins-ux on freenode irc (hopefully there is someone around most times), and also if you post to this dev list, please use [Blue Ocean] as the topic prefix, so the long suffering subscribers are able to filter out threads they are not interested in. 


There will be a blueocean “component” in JIRA for raising issues against once the HOSTING ticket is taken care of.


Here is a presentation on front end development with blue ocean for those interested in looking a bit deeper.

One again, the section on the blog post is worth reading, especially for developers https://jenkins.io//blog/2016/05/26/introducing-blue-ocean/#jenkins-design-language. And the source code (for now, until migrated to jenkinsci org): https://github.com/cloudbees/blueocean


See you around #jenkins-ux (freenode) hopefully!


Cheers. Mic.


Stanislas Chollet

unread,
May 27, 2016, 8:26:59 AM5/27/16
to Jenkins Developers
Hello Michael,

Good job ! This new fresh UI is really a good improvement for the jenkins project !

I wondering if there is a Docker image of Blue Ocean to try it directly on a existing installation ?

Have a good day,

James Dumay

unread,
May 27, 2016, 8:29:12 AM5/27/16
to Jenkins Developers
We have a docker image that gets published daily to a private Docker repository but we need to move it to a public repository. Could you file an issue on JIRA with the Blue Ocean component?
--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/IIRW6MAfJnc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/4f72051b-a585-4da8-9636-a289bfa72cb6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
James Dumay
Product Manager
CloudBees, Inc.
Skype: ap_myskype Twitter: i386

Stanislas Chollet

unread,
May 27, 2016, 8:51:38 AM5/27/16
to Jenkins Developers
Thanks James.

I just created an issue on JIRA -> https://issues.jenkins-ci.org/browse/JENKINS-35181

Regards,

Tom Fennelly

unread,
May 27, 2016, 12:04:13 PM5/27/16
to Jenkins Developers
I think Nicolas already has something cooked up and ready to go for this. We'll let you know when it's ready.

Manish Dubey

unread,
May 27, 2016, 1:38:06 PM5/27/16
to Jenkins Developers
Hello Michael,

My bad if you are not the right person to ideate on below case.

Business case -

To develop a plugin for Continuous Integration Tools like Jenkins to verify the changes made in Jenkins’ workspace between consecutive builds and process further based on the changes.


However since HANA as in this case does not have such a mechanism we need the scan to triggered on daily or nightly basis irrespective of the changes made or not.


Can we develope a plugin which is executed once the Source Code from HANA is loaded into the workspace of the Jenkins job, the plugin then goes through the current workspace also retains a copy of previous workspace and lets the job know if there is any change made so that the scan shall be triggered only in case of change and thereby reducing the cost of unwanted scans.



Please ideate if this is the best-fit to go for plugin or  any best available solution to avoid unwanted scans.



Regards

Manish

Manish Dubey

unread,
May 27, 2016, 2:44:52 PM5/27/16
to Jenkins Developers
Guys, appreciate if you suggeest me here. 


Best
Manish

Andrew Bayer

unread,
May 27, 2016, 3:37:30 PM5/27/16
to jenkin...@googlegroups.com
Send a separate email to the dev list.

A.

--
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 jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/9195e59d-d6af-4a0a-a5a2-c21a4d8b90bc%40googlegroups.com.

nicolas de loof

unread,
May 27, 2016, 4:28:39 PM5/27/16
to jenkin...@googlegroups.com

--
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 jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/d9479503-0b5f-4b4a-a8b0-4b5518268906%40googlegroups.com.

Michael Neale

unread,
May 27, 2016, 6:33:03 PM5/27/16
to Jenkins Developers
FYI just did a "transfer of ownership" of the github repo to: 


old links redirect to there, and they are now fully operational. 

Surya Gaddipati

unread,
May 30, 2016, 11:09:23 AM5/30/16
to Jenkins Developers
This is great work. Congrats. 

SSE is nice touch that would make Jenkins so much more responsive. 

Martin Reinhardt

unread,
Jun 1, 2016, 5:17:39 AM6/1/16
to Jenkins Developers
really cool

Tom Fennelly

unread,
Jun 2, 2016, 2:03:17 PM6/2/16
to Jenkins Developers
We created a blueocean-acceptance-test repo and have some initial acceptance/smoke tests in it.

Hoping the repo can be moved to jenkinsci (HOSTING-109).

Builds on the main acceptance-test-harness. Initial tests are written using a JS selenium toolkit called Nightwatch.js. There's a video on the README.md.

Tom Fennelly

unread,
Jun 2, 2016, 2:04:23 PM6/2/16
to Jenkins Developers
And of course this may end up being merged back into the  main acceptance-test-harness repo at some stage ... we'll see :)
Reply all
Reply to author
Forward
0 new messages