Blue Ocean is a reboot of the Jenkins CI/CD User Experience
Go to file
James Dumay cb3cda02ce Authentication filters are pluggable. Embedded driver now uses security realms. 2016-02-23 20:35:05 +11:00
all Authentication filters are pluggable. Embedded driver now uses security realms. 2016-02-23 20:35:05 +11:00
alpha [UX-6] Authentication Abstraction and Impl 2016-02-22 17:03:23 +13:00
authentication-service [UX-6] Authentication Abstraction and Impl 2016-02-22 17:03:23 +13:00
authentication-service-api [UX-6] Authentication Abstraction and Impl 2016-02-22 17:03:23 +13:00
bin [UX-6] Authentication Abstraction and Impl 2016-02-22 17:03:23 +13:00
blueocean-commons [UX-6] Authentication Abstraction and Impl 2016-02-22 17:03:23 +13:00
blueocean-github-oauth-plugin [UX-6] Authentication Abstraction and Impl 2016-02-22 17:03:23 +13:00
blueocean-security-api Authentication filters are pluggable. Embedded driver now uses security realms. 2016-02-23 20:35:05 +11:00
bravo [UX-6] Authentication Abstraction and Impl 2016-02-22 17:03:23 +13:00
core Authentication filters are pluggable. Embedded driver now uses security realms. 2016-02-23 20:35:05 +11:00
embedded-driver Authentication filters are pluggable. Embedded driver now uses security realms. 2016-02-23 20:35:05 +11:00
js-plugin-experiments feature/UX-36: 2016-02-19 22:19:55 +11:00
pipeline-service-api [UX-6] Authentication Abstraction and Impl 2016-02-22 17:03:23 +13:00
profile-service-api Authentication filters are pluggable. Embedded driver now uses security realms. 2016-02-23 20:35:05 +11:00
war Shouldn't require Java8 to build 2016-02-18 13:54:20 -08:00
.editorconfig added .editorconfig 2016-02-03 07:37:31 +00:00
.gitignore [UX-6] Authentication Abstraction and Impl 2016-02-22 17:03:23 +13:00
CONTRIBUTING.md everyone is a pedant 2016-02-18 14:54:52 +11:00
LICENSE.txt Add license 2016-02-01 10:44:03 +11:00
PULL_REQUEST_TEMPLATE tidying up contributing guidelines 2016-02-18 12:33:12 +11:00
README.md [UX-6] Authentication Abstraction and Impl 2016-02-22 17:03:23 +13:00
app.properties.example [UX-6] Authentication Abstraction and Impl 2016-02-22 17:03:23 +13:00
dev_core.sh use set -eu 2016-02-01 17:38:52 +11:00
logo-yarrr.png needs a logo 2016-01-25 16:47:21 +11:00
pom.xml Authentication filters are pluggable. Embedded driver now uses security realms. 2016-02-23 20:35:05 +11:00

README.md

This is BlueOcean repo. It is a multi-module maven project. Derived from Castle code base. Each sub-directory at the root of the repo is jenkins extension.

Blue Ocean is the new UI project for Jenkins.

Please do not commit anything in here that you do not intend to make open source

Pirate logo, because it's ocean and stuff

Module Breakdown

core

All core functionality code lives here.

  • js

    • blueocean.js
      • It is the entry point for blueocean UI. It defines extension point and for demonstration it defines dependency on another extension name
  • java

    • embryo
      • Replaces classic jenkins, will eventually be replaced by embryo code
    • blueocean
      • BlueOceanUI.java is entry point for blue ocean backend
  • resources

    • io/blueocean/BlueOceanUI/index.jelly is equivalent of index.html. We needed this jelly file to inject certain run time variables.
  • pom.xml

    • metrics and variant plugins are there for example to show this is where we can add dependency on external plugins

alpha and bravo

These are just example of extensions. In due course we will be adding such extensions to this repo.

all

This is where you run the app to include all plugins along with core. During development it can be used to include all extensions.

war

Generates BlueOcean standalone war file, to be run as java -jar blueocean.war.

This does not include embedded-driver as it's a plugin to be installed on standalone jenkins war.

Build and Run

Build and run core module

$ cd core
$ mvn hpi:run

To do javascript development

If you wish to make changes to blueocean.js, then you will need to install gulp (http://gulpjs.com/), and then either run:

$ ./dev_core.sh

or the following:

$ gulp rebundle

(or run gulp, after each change) in the core directory. This will pick up source changes to commonjs modules (and other things) and put them in target for you (running gulp will run js unit tests too).

Build and run all module

Builds all modules (except war), basically includes all extensions to let you test everything together during development. Also produces blueocean-all.hpi that can possibly be installed as plugin on Jenkins.

$ cd all
$ mvn hpi:run

Build everything (from root directory)

Builds all maven modules.

$ mvn clean install

Running Blue Ocean

Setup

You will need to setup a app.properties file before you can run blue ocean.

From the root:

$ cp app.properties.example app.properties

Then create a new Github application and add the client id and secret to the app.properties file. Without this you will not be able to sign-in to Blue Ocean.

The Authorization callback URL must be set to http://localhost:8080/loginAction/authenticate/github

Run

$ ./bin/start.sh

Debug and live reload with IntelliJ (Recommended)

Automatically deploys changes to an instance of blueocean that is run with hpi:run.

  1. Enable class reloading: Preferences > Build, Execution, Deployment > Debugger > HowSwap
  • Reload classes in background
  • Reload classes after compilation: always
  1. Create a Maven Run/Debug configuration
  • Working Directory: <project root>/all
  • Command hpi:run
  • Runner > Properties: Enable Skip tests
  • Runner > VM Options: -Dblueocean.config.file=../app.properties
  1. Debug new configuration, and after compilation the class file will be reloaded

Debug with remote debugger

To have the Java debugger listen on port 8000:

$ ./bin/start.sh --debug