• Stars
    star
    2,877
  • Rank 15,767 (Top 0.4 %)
  • Language
    Java
  • License
    MIT License
  • Created almost 9 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Blue Ocean is a reboot of the Jenkins CI/CD User Experience

Blue Ocean

Blue Ocean is an alternative user experience for Jenkins. You can learn more about its features on the Blue Ocean project website.

Join the community and Gitter

Blue Ocean status

Blue Ocean will not receive further functionality updates. Blue Ocean will continue to provide easy-to-use Pipeline visualization, but it will not be enhanced further. It will only receive selective updates for significant security issues or functional defects.

Alternative options for Pipeline visualization, such as the Pipeline: Stage View and Pipeline Graph View plugins, are available and offer some of the same functionality. While not complete replacements for Blue Ocean, contributions are encouraged from the community for continued development of these plugins.

The Pipeline syntax snippet generator assists users as they define Pipeline steps with their arguments. It is the preferred tool for Jenkins Pipeline creation, as it provides online help for the Pipeline steps available in your Jenkins controller. It uses the plugins installed on your Jenkins controller to generate the Pipeline syntax. Refer to the Pipeline steps reference page for information on all available Pipeline steps.

Get Blue Ocean

Blue Ocean is available from the Jenkins update center for Jenkins 2.7.1 and above.

Reporting bugs and feature requests

We use the Jenkins JIRA to log all bugs and feature requests. Create a new account, browse to JIRA and login with your account then create a new issue with the component blueocean-plugin.

For Developers

It is a multi-module maven project made up of a few Jenkins plugins. There is an aggregator plugin in the "blueocean" module.

CONTRIBUTIONS ALWAYS WELCOME NO MATTER HOW BIG OR SMALL.

Some background reading: https://jenkins.io/blog/2016/05/26/introducing-blue-ocean/

This is in the main Update Center for Jenkins. Install the plugin called "BlueOcean beta" (and let it install its dependencies). The instructions here are for contributors to Blue Ocean and the morbidly curious. Expect refactoring.

Pirate logo, because it's ocean and stuff Yarr...

Modules of note

A quick tour of some of the modules (not all). Consult README.md in respective modules for more info.

blueocean-dashboard

Blue Ocean Dashboard plugin. Currently contains a lot of the core of the Blue Ocean user interface and extension points. This is mostly client side JavaScript built with ES6 and React.

blueocean

An aggregator plugin, making it an easy place from which to run Blue Ocean via hpi:run.

blueocean-rest

Java interfaces and classes that specify the definition of the REST API that blueocean uses. See the README.md within this module for detail on this api.

blueocean-rest-impl

Provides the default implementation of the core REST Apis defined in the blueocean-rest plugin. It comes with only freestyle job support.

blueocean-pipeline-api-impl

Provides implementation of Pipeline apis for Jenkins pipeline and multi-branch job types support

blueocean-web

Core Web infrastructure that bootstraps BlueOcean UI and integrates REST API core blueocean-rest, and serves up the core javascript libraries.

Building and running

At a minimum you will need a JVM, Maven and python installed, if you are doing active JavaScript development, you may want to install NodeJS, but it is not a requirement as the frontend-maven-plugin will install the correct version of Node locally for each plugin to build and develop with.

Build everything (from root directory)

Builds all maven modules (run this the first time you check things out, at least)

$ mvn clean install

NOTE: If you are using macOS, you must install JDK 1.8 or the installation will fail (The most recent versions of macOS come preinstalled with JDK 10). Please follow this link for instructions.

For now, you'll need to skip the tests if building on Windows, so be sure to include the -DskipTests switch e.g.

$ mvn clean install -DskipTests

Running Blue Ocean

$ mvn -f blueocean/pom.xml hpi:run

Then open http://localhost:8080/jenkins/blue to start using Blue Ocean.

The Jenkins Classic UI exists side-by-side at its usual place at http://localhost:8080/jenkins.

NOTE: while running in this mode, Jenkins will automatically re-compile your JavaScript files and LESS files for all local plugins (including those linked with hpi:hpl) where a package.json is found that contains a mvnbuild script. If you would like to disable this behavior, you may set the system property: -Dblueocean.features.BUNDLE_WATCH_SKIP=true

Browser compatibility

The obvious goal is for Blue Ocean to be runnable on all browsers on all platforms. We're not there yet, but getting closer. The ultimate goal will be to have browser support in line with the Jenkins Browser Compatibility Matrix.

List of browsers where we know Blue Ocean is not yet runnable:

  • Internet Explorer < 11 on Windows (the aim is to keep IE 11 working, but help is needed to maintain a Windows test environment in the pipeline)

  • AmigaOS

Developing

Follow the steps above for getting it running first.

Look in following README's for:

  • blueocean-rest for how to navigate the rest api.
  • blueocean-dashboard guide on how to modify the GUI in the dashboard plugin.
  • blueocean-rest-impl for more details on how to actively develop this plugin for backend codebases.

Building plugins for Blue Ocean

Blue Ocean plugins use the same plugin mechanism as Jenkins for distribution and installation, but involve a lot more JavaScript if they have GUI elements.

The best way to get started is to look at the tutorial and Yeoman starter project here: https://www.npmjs.com/package/generator-blueocean-usain The usual plugin guide also applies for Jenkins: https://wiki.jenkins-ci.org/display/JENKINS/Plugin+tutorial#Plugintutorial-CreatingaNewPlugin

Ask for help in the gitter room or on the jenkins-ux google group if you are working on a plugin.

Extension points

Blue Ocean has javascript extension points that currently work with react components. This area is a work in progress, and there is no programmatic listing of all the current extension points in a plugin. However, you can grep/search for '<Extensions.Renderer extensionPoint=' and find named extension points. Plugins can contribute to these by declaring what components to plugin in those extension points in their jenkins-js-extension.yaml file (see link for a real world example - the editor implements a few extension points as react components, even css). The editor plugin is a good reference point for blue ocean plugins: blueocean-pipeline-editor.

Tools needed

Maven is used for most building - install Maven and JDK8 (ideally).

As npm packages are used node-gyp may be involved and this can require some tools installed to build native dependencies (native components are not used at runtime) - see https://www.npmjs.com/package/node-gyp for instructions for your platform

If you are working on the JavaScript, you will need node installed, look at the version in the pom.xml for the minimum version required.

NOTE: look in the README.md of the respective modules for more detailed dev docs.

NPM and shrinkwrap

  • NOTE: after running npm install you will have some copies of Node you can use without installing it globally on your system, e.g. from the repository root: PATH=blueocean-web/node:$PATH npm <do-stuff>
  • Ensure your npm is 3.10.8+ as this release fixes some important bugs with shrinkwrap, notably #11735 in notes
  • Don't edit package.json directly; use npm install to ensure that both package.json and npm-shrinkwrap.json are updated.
  • To add or update a dependency:
  • To add or update a devDependency:
  • If you are handling a merge conflict in package.json, resolve the conflict in the file as normal. Then use the appropriate command to update each conflicting dependency to ensure shrinkwrap is updated.
  • To remove a dependency:
    • npm uninstall packageName -S
  • To remove a devDependency:
    • npm uninstall packageName -D
  • If you ever need to create a shrinkwrap for the first time, use npm shrinkwrap --dev to ensure devDependencies are included in the shrinkwrap.

Full docs on npm shrinkwrap Information on building with shrinkwrap

In case you want to update your dependencies with something like npm-check-updates make sure you follow the simple steps:

ncu -a
rm -rf node_modules npm-shrinkwrap.json
npm i
npm shrinkwrap --dev

Source code formatting

We are using prettier.js to format JavaScript in order to keep source consistent automatically rather than with build-time errors about unformatted code. We do this via a pre-commit hook, which you will have to enable in your local checkout.

  • From the root directory of your blueocean/ clone, first create the symlink:
jdoe@localhost> ln -s ../../bin/pre-commit.js .git/hooks/pre-commit
  • Check the symlink, because if it's wrong git will silently ignore it:
jdoe@localhost> file .git/hooks/pre-commit
# => .git/hooks/pre-commit: a /usr/bin/env node script text executable, ASCII text
  • Check (with no staged changes) to make sure it's going to run successfully in your environment:
jdoe@localhost> .git/hooks/pre-commit
# => No staged files to format.

Contributing - help wanted

i18n - Sprechen Sie Deutsch?

We have full i18n support in our plugins. Please read the i18n documentation on how you can provide new translations and how to work with i18n.

contributing guidelines

Want to get involve with blueocean? See our contributing guidelines for more informations.

Debug and live reload with IntelliJ

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

  1. Enable class reloading: Preferences > Build, Execution, Deployment > Debugger > HotSwap
  • 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

Help

Need help?

You can chat to folks on #jenkins-ux on freenode (IRC). You can also email the jenkins-dev email list (google group: https://groups.google.com/forum/#!forum/jenkinsci-dev) - but ensure you use the prefix [Blue Ocean] in your subject line when posting.

Presentations

Advanced front end development with react, redux and stuff by @scherler: https://docs.google.com/presentation/d/1dbaYTIGjGT9xX1JnWnaqjMumq94M9nGwljfMQaVtUFc/edit?usp=sharing

Watch @jenkinsci on Twitter for frequent updates and news.

Upgrading dependencies

If you wish to upgrade dependencies or test an upgrade to something like pipeline (as an example), pom.xml in the root of the project should have all the versions specified, a pull request to validate the changes is appreciated.

If you wanted to see if a new version of a library works with blue ocean:

  • If it isn't published yet, release a beta to the experimental update center
  • Open a pull request with the changes to the pom.xml in the root of this project (beta dependencies are fine)
  • Mark the pull request as "needs-review"
  • Make sure to "@mention" people - @michaelneale @vivek are some good ones to start with in a pull request description
  • IF the dependency being upgraded is only released to the experimental update center (ie a beta) please also mark the PR as 'DO NOT MERGE' (once it has been released to the main update center, this can be removed)
  • Check back later for build success (ie unit tests)
  • The Acceptance Test Harness will normally be automatically triggered after a successful PR build, however, it ie best to check it has run: (https://ci.blueocean.io/job/ATH-Jenkinsfile/job/master/) - consult a blue ocean contributor (see below) and they will ensure it has run. This is required for a dependency change.
  • Contact a contributor (see below) to let them know of your proposed change so they can review it and do extra testing
  • Ensure any dependencies are released to the non beta UC, before merging to master when approved.

Once the PR is accepted, it will be in use on "dogfood" on ci.blueocean.io/blue - and thus it will be in day to day use almost immediately. If it does bad things, expect to hear about it.

Contacting contributors:

Gitter is the day to day chat venue used, you can log in with your github identity.

The Acceptance test suite is located here: acceptance-tests

Releasing

When the ATH passes and there is a consensus that a release can be performed:

$ mvn release:prepare -DautoVersionSubmodules=true
$ mvn release:perform

This will take a while to build and upload.

  • Update release notes on the wiki page

It will take a few hours to propagate to UC.

More Repositories

1

jenkins

Jenkins automation server
Java
21,381
star
2

docker

Docker official jenkins repo
Dockerfile
6,144
star
3

pipeline-examples

A collection of examples, tips and tricks and snippets of scripting for the Jenkins Pipeline plugin
Groovy
4,117
star
4

configuration-as-code-plugin

Jenkins Configuration as Code Plugin
Java
2,521
star
5

kubernetes-plugin

Jenkins plugin to run dynamic agents in a Kubernetes/Docker environment
Java
2,206
star
6

job-dsl-plugin

A Groovy DSL for Jenkins Jobs - Sweeeeet!
Groovy
1,851
star
7

pipeline-plugin

Obsolete home for Pipeline plugins
1,711
star
8

JenkinsPipelineUnit

Framework for unit testing Jenkins pipelines
Groovy
1,426
star
9

gitlab-plugin

A Jenkins plugin for interfacing with GitLab
Java
1,418
star
10

jenkinsfile-runner

A command line tool to run Jenkinsfile as a function
Java
1,137
star
11

java-client-api

A Jenkins API client for Java
Java
888
star
12

jenkins-scripts

Scripts in Groovy, shell, Ruby, Python, whatever for managing/interacting with Jenkins
Groovy
880
star
13

build-monitor-plugin

Jenkins Build Monitor Plugin
Java
722
star
14

git-plugin

Git repository access for Jenkins jobs
Java
668
star
15

slack-plugin

A Jenkins plugin for posting notifications to a Slack channel
Java
664
star
16

pipeline-model-definition-plugin

Groovy
562
star
17

docker-workflow-plugin

Jenkins plugin which allows building, testing, and using Docker images from Jenkins Pipeline projects.
Java
500
star
18

ghprb-plugin

github pull requests builder plugin for Jenkins
Java
495
star
19

docker-plugin

Jenkins Cloud Plugin that uses Docker
Java
482
star
20

docker-inbound-agent

Docker image for a Jenkins agent which can connect to Jenkins using TCP or Websocket protocols
PowerShell
466
star
21

helm-charts

Jenkins helm charts
Mustache
448
star
22

pipeline-aws-plugin

Jenkins Pipeline Step Plugin for AWS
Java
423
star
23

jenkins.rb

Deprecated, see https://www.jenkins.io/jep/7
Ruby
394
star
24

generic-webhook-trigger-plugin

Can receive any HTTP request, extract any values from JSON or XML and trigger a job with those values available as variables. Works with GitHub, GitLab, Bitbucket, Jira and many more.
Java
377
star
25

email-ext-plugin

Jenkins Email Extension Plugin
Java
338
star
26

dingtalk-plugin

Dingtalk for jenkins
Java
336
star
27

warnings-ng-plugin

Jenkins Warnings Plugin - Next Generation
Java
323
star
28

plugin-installation-manager-tool

Plugin Manager CLI tool for Jenkins
Java
301
star
29

mesos-plugin

Mesos Cloud Jenkins Plugin
Java
290
star
30

github-plugin

Jenkins GitHub plugin
Java
286
star
31

ec2-plugin

Jenkins ec2 plugin
Java
285
star
32

ssh-steps-plugin

Jenkins pipeline steps which provides SSH facilities such as command execution or file transfer for continuous delivery.
Java
273
star
33

ansicolor-plugin

Jenkins ANSI Color Plugin
Java
252
star
34

pipeline-utility-steps-plugin

Small, miscellaneous, cross platform utility steps for Jenkins Pipeline jobs.
Java
237
star
35

docker-agent

Base Docker image for Jenkins Agents
PowerShell
231
star
36

ansible-plugin

Jenkins Ansible plugin
Java
223
star
37

workflow-cps-global-lib-plugin

Java
223
star
38

hashicorp-vault-plugin

Jenkins plugin to populate environment variables from secrets stored in HashiCorp's Vault.
Java
218
star
39

lib-file-leak-detector

Java agent that detects file handle leak
Java
217
star
40

bitbucket-branch-source-plugin

Bitbucket Branch Source Plugin
Java
213
star
41

gerrit-trigger-plugin

Java
212
star
42

remoting

Jenkins Remoting module
Java
212
star
43

workflow-aggregator-plugin

211
star
44

android-emulator-plugin

Android Emulator plugin for Jenkins
Java
207
star
45

docker-slaves-plugin

A Jenkins plugin to run builds inside Docker containers
Java
205
star
46

github-branch-source-plugin

GitHub Branch Source Plugin
Java
205
star
47

pipeline-stage-view-plugin

Visualizes Jenkins pipelines
JavaScript
204
star
48

jenkinsfile-runner-github-actions

Jenkins single-shot pipeline execution in a GitHub Action POC
Shell
199
star
49

amazon-ecs-plugin

Amazon EC2 Container Service Plugin for Jenkins
Java
193
star
50

trilead-ssh2

Patched trilead-ssh2 used in Jenkins
Java
193
star
51

cucumber-reports-plugin

Jenkins plugin to generate cucumber-jvm reports
Java
192
star
52

docker-build-publish-plugin

Java
192
star
53

performance-plugin

Performance Test Running and Reporting for Jenkins CI
Java
190
star
54

jira-plugin

Jenkins jira plugin
Java
169
star
55

gitea-plugin

This plugin provides the Jenkins integration for Gitea.
Java
168
star
56

embeddable-build-status-plugin

Embed build status of Jenkins jobs in web pages
Java
167
star
57

stashnotifier-plugin

A Jenkins Plugin to notify Atlassian Stash|Bitbucket of build results
Java
163
star
58

docker-ssh-agent

Docker image for Jenkins agents connected over SSH
PowerShell
162
star
59

workflow-cps-plugin

Java
160
star
60

http-request-plugin

This plugin does a request to an url with some parameters.
Java
154
star
61

kubernetes-pipeline-plugin

Kubernetes Pipeline is Jenkins plugin which extends Jenkins Pipeline to provide native support for using Kubernetes pods, secrets and volumes to perform builds
Java
154
star
62

stapler

Stapler web framework
Java
154
star
63

tfs-plugin

Jenkins tfs plugin
Java
145
star
64

jep

Jenkins Enhancement Proposals
Shell
144
star
65

kubernetes-cd-plugin

A Jenkins plugin to deploy to Kubernetes cluster
Java
140
star
66

jacoco-plugin

Jenkins JaCoCo Plugin
Java
139
star
67

qy-wechat-notification-plugin

企业微信Jenkins构建通知插件
Java
138
star
68

swarm-plugin

Jenkins swarm plugin
Java
135
star
69

git-client-plugin

Git client API for Jenkins plugins
Java
130
star
70

dependency-check-plugin

Jenkins plugin for OWASP Dependency-Check. Inspects project components for known vulnerabilities (e.g. CVEs).
Java
129
star
71

subversion-plugin

Jenkins subversion plugin
Java
127
star
72

git-parameter-plugin

Jenkins plugin for chosing Revision / Tag before build
Java
121
star
73

role-strategy-plugin

Jenkins Role-Strategy plugin
Java
120
star
74

groovy-sandbox

(Deprecated) Compile-time transformer to run Groovy code in a restrictive sandbox
Java
120
star
75

jenkins-design-language

Styles, assets, and React classes for Jenkins Design Language
TypeScript
116
star
76

acceptance-test-harness

Acceptance tests cases for Jenkins and its plugins based on selenium and docker.
Java
116
star
77

publish-over-ssh-plugin

Java
115
star
78

gitlab-branch-source-plugin

A Jenkins Plugin for GitLab Multibranch Pipeline jobs and Folder Organization
Java
115
star
79

scm-sync-configuration-plugin

Jenkins scm-sync-configuration plugin
Java
115
star
80

pipeline-as-yaml-plugin

Jenkins Pipeline As Yaml Plugin
Java
114
star
81

selenium-plugin

Jenkins selenium plugin
Java
112
star
82

docker-build-step-plugin

Java
111
star
83

jira-trigger-plugin

Triggers a build when a certain condition is matched in JIRA
Groovy
111
star
84

code-coverage-api-plugin

Deprecated Jenkins Code Coverage Plugin
Java
110
star
85

gradle-plugin

Jenkins gradle plugin
Java
109
star
86

cobertura-plugin

Jenkins cobertura plugin
Java
109
star
87

credentials-plugin

Provides Jenkins with extension points to securely store, manage, and bind credentials data to other Jenkins plugins, builds, pipelines, etc.
Java
107
star
88

jira-steps-plugin

Jenkins pipeline steps for integration with JIRA.
Java
105
star
89

artifactory-plugin

Jenkins artifactory plugin
Java
104
star
90

build-flow-plugin

A plugin to manage job orchestration
Groovy
103
star
91

github-oauth-plugin

Jenkins authentication plugin using GitHub OAuth as the source.
Java
102
star
92

throttle-concurrent-builds-plugin

Java
101
star
93

pipeline-graph-view-plugin

Java
99
star
94

promoted-builds-plugin

Jenkins Promoted Builds Plugin
Java
96
star
95

ssh-slaves-plugin

SSH Build Agents Plugin for Jenkins
Java
96
star
96

github-pr-coverage-status-plugin

Nice test coverage icon for your pull requests just from Jenkins
Java
93
star
97

jenkins-test-harness

Unit test framework for Jenkins core and its plugins
Java
92
star
98

localization-zh-cn-plugin

Chinese Localization for Jenkins
HTML
91
star
99

opentelemetry-plugin

Monitor and observe Jenkins with OpenTelemetry.
Java
90
star
100

office-365-connector-plugin

Office 365 Connector plugin sends jobs status notifications to Microsoft Teams or Outlook
Java
89
star