├── .github ├── release-drafter.yml ├── CODEOWNERS ├── FUNDING.yml ├── workflows │ ├── cd.yaml │ └── jenkins-security-scan.yml └── dependabot.yml ├── .mvn ├── maven.config └── extensions.xml ├── docs ├── Setting_up.png ├── 1_Adding_jobs.png ├── 0_A_place_to_start.png ├── 4_Colour_blind_mode.png ├── 2_Three_columns_view.png └── 3_Two_columns_view_with_claim_and_build_failure_analyzer_plugins.png ├── Jenkinsfile ├── .git-blame-ignore-revs ├── .gitignore ├── LICENSE ├── pom.xml ├── CHANGELOG.md └── README.md /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | _extends: .github 2 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @jenkinsci/build-monitor-plugin-developers 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [ jan-molak ] 4 | -------------------------------------------------------------------------------- /.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Pconsume-incrementals 2 | -Pmight-produce-incrementals 3 | -Dchangelist.format=%d.v%s 4 | -------------------------------------------------------------------------------- /docs/Setting_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/build-monitor-plugin/HEAD/docs/Setting_up.png -------------------------------------------------------------------------------- /docs/1_Adding_jobs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/build-monitor-plugin/HEAD/docs/1_Adding_jobs.png -------------------------------------------------------------------------------- /docs/0_A_place_to_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/build-monitor-plugin/HEAD/docs/0_A_place_to_start.png -------------------------------------------------------------------------------- /docs/4_Colour_blind_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/build-monitor-plugin/HEAD/docs/4_Colour_blind_mode.png -------------------------------------------------------------------------------- /docs/2_Three_columns_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/build-monitor-plugin/HEAD/docs/2_Three_columns_view.png -------------------------------------------------------------------------------- /Jenkinsfile: -------------------------------------------------------------------------------- 1 | buildPlugin(timeout: 120, useContainerAgent: true, configurations: [ 2 | [platform: 'linux', jdk: 21], 3 | ]) 4 | -------------------------------------------------------------------------------- /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | # .git-blame-ignore-revs 2 | # Enable Spotless for code formatting (#720) 3 | d6817317a2b7dd6600903ff235134856c5e852c3 4 | -------------------------------------------------------------------------------- /docs/3_Two_columns_view_with_claim_and_build_failure_analyzer_plugins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/build-monitor-plugin/HEAD/docs/3_Two_columns_view_with_claim_and_build_failure_analyzer_plugins.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # IntelliJ 2 | .idea 3 | *.iml 4 | 5 | # Eclipse 6 | .classpath 7 | .project 8 | .settings/ 9 | 10 | #JEnv 11 | .java-version 12 | 13 | target 14 | work 15 | 16 | node 17 | node_modules 18 | 19 | use-node 20 | .DS_Store 21 | 22 | chromedriver.exe 23 | 24 | !.travis.yml 25 | 26 | build-monitor-plugin/src/main/webapp/styles/index.css 27 | build-monitor-plugin/src/main/webapp/styles/main.js 28 | -------------------------------------------------------------------------------- /.mvn/extensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | io.jenkins.tools.incrementals 4 | git-changelist-maven-extension 5 | 1.10 6 | 7 | 8 | -------------------------------------------------------------------------------- /.github/workflows/cd.yaml: -------------------------------------------------------------------------------- 1 | # Note: additional setup is required, see https://www.jenkins.io/redirect/continuous-delivery-of-plugins 2 | 3 | name: cd 4 | on: 5 | workflow_dispatch: 6 | check_run: 7 | types: 8 | - completed 9 | 10 | permissions: 11 | checks: read 12 | contents: write 13 | 14 | jobs: 15 | maven-cd: 16 | uses: jenkins-infra/github-reusable-workflows/.github/workflows/maven-cd.yml@v1 17 | secrets: 18 | MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} 19 | MAVEN_TOKEN: ${{ secrets.MAVEN_TOKEN }} 20 | -------------------------------------------------------------------------------- /.github/workflows/jenkins-security-scan.yml: -------------------------------------------------------------------------------- 1 | # Jenkins Security Scan 2 | # For more information, see: https://www.jenkins.io/doc/developer/security/scan/ 3 | 4 | name: Jenkins Security Scan 5 | 6 | on: 7 | push: 8 | branches: 9 | - master 10 | pull_request: 11 | types: [opened, synchronize, reopened] 12 | workflow_dispatch: 13 | 14 | permissions: 15 | security-events: write 16 | contents: read 17 | actions: read 18 | 19 | jobs: 20 | security-scan: 21 | uses: jenkins-infra/jenkins-security-scan/.github/workflows/jenkins-security-scan.yaml@v2 22 | with: 23 | java-cache: 'maven' # Optionally enable use of a build dependency cache. Specify 'maven' or 'gradle' as appropriate. 24 | # java-version: 21 # Optionally specify what version of Java to set up for the build, or remove to use a recent default. 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2013-2014, Jan Molak, SmartCode Ltd http://smartcodeltd.co.uk 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 2 | --- 3 | version: 2 4 | updates: 5 | - package-ecosystem: "maven" 6 | directory: "/" 7 | schedule: 8 | interval: "weekly" 9 | ignore: 10 | # Starting with 7.x, Guice switches from javax.* to jakarta.* bindings. 11 | # See https://github.com/google/guice/wiki/Guice700 12 | - dependency-name: "com.google.inject:guice" 13 | versions: [">=7.0.0"] 14 | # Bad release in Artifactory breaks Dependabot 15 | - dependency-name: "com.sonyericsson.jenkins.plugins.bfa:build-failure-analyzer" 16 | versions: ["2.27.0"] 17 | # This is the minimum Jenkins version 18 | - dependency-name: "org.jenkins-ci.main:cli" 19 | - package-ecosystem: "github-actions" 20 | directory: "/" 21 | schedule: 22 | interval: "weekly" 23 | - package-ecosystem: "npm" 24 | directory: "build-monitor-plugin" 25 | schedule: 26 | interval: "weekly" 27 | ignore: 28 | # Breaking changes, see: 29 | # https://github.com/jenkinsci/build-monitor-plugin/pull/677 30 | - dependency-name: "jasmine-core" 31 | versions: [">=3.0.0"] 32 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | 6 | org.jenkins-ci.plugins 7 | plugin 8 | 5.18 9 | 10 | 11 | 12 | build-monitor 13 | ${revision}-${changelist} 14 | pom 15 | Build Monitor 16 | https://github.com/jenkinsci/build-monitor-plugin 17 | 18 | 19 | build-monitor-plugin 20 | build-monitor-acceptance 21 | 22 | 23 | 24 | scm:git:https://github.com/${gitHubRepo}.git 25 | scm:git:git@github.com:${gitHubRepo}.git 26 | ${scmTag} 27 | https://github.com/${gitHubRepo} 28 | 29 | 30 | 31 | 32 | repo.jenkins-ci.org 33 | https://repo.jenkins-ci.org/releases 34 | 35 | 36 | 37 | 38 | 1.14 39 | 999999-SNAPSHOT 40 | 41 | 2.492 42 | ${jenkins.baseline}.3 43 | jenkinsci/build-monitor-plugin 44 | false 45 | 46 | 47 | 48 | 49 | repo.jenkins-ci.org 50 | https://repo.jenkins-ci.org/public/ 51 | 52 | 53 | 54 | 55 | 56 | repo.jenkins-ci.org 57 | https://repo.jenkins-ci.org/public/ 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## Changelog 2 | 3 | * All notable changes prior to 1.12 are documented in this changelog. 4 | * Release notes for versions >= 1.14 can be found on the [GitHub releases page](https://github.com/jenkinsci/build-monitor-plugin/releases). 5 | 6 | == Release History 7 | 8 | - **1.11+build.201701152243** [Changelog](http://bit.ly/JBMDiffB20161104-B20170115) [Release notes](http://bit.ly/JBMBuild20170115) 9 | - **1.10+build.201611041949** [Changelog](http://bit.ly/JBMDiffB20160803-B20161104) [Release notes](http://bit.ly/JBMBuild20161104) 10 | - **1.10+build.201608030223** [Changelog](http://bit.ly/JBMDiffB20160613-B20160803) [Release notes](http://bit.ly/JBMBuild20160803) 11 | - **1.9+build.201606131328** [Changelog](http://bit.ly/JBMDiffB20160605-B20160613) [Release notes](http://bit.ly/JBMBuild20160613) 12 | - **1.9+build.201606052339** [Changelog](http://bit.ly/JBMDiffB20160502-B20160605) [Release notes](http://bit.ly/JBMBuild20160605) 13 | - **1.9+build.201605021413** [Changelog](http://bit.ly/JBMDiffB20160111-B20160502) [Release notes](http://bit.ly/JBMBuild20160502) 14 | - **1.8+build.201601112328** [Changelog](http://bit.ly/JBMDiffB20160105-B20160111) [Release notes](http://bit.ly/JBMBuild20160111) 15 | - **1.8+build.201601052013** [Changelog](http://bit.ly/JBMDiffB172-B20160105) [Release notes](http://bit.ly/JBMBuild20160105) 16 | - **1.7+build.172** (Nov 29, 2015) [Changelog](http://bit.ly/JBMDiffB164-B172) [Release notes](http://bit.ly/JBMBuild172) 17 | - **1.6+build.164** (Nov 08, 2015) [Release notes](http://bit.ly/JBMBuild164) 18 | - **1.6+build.163** (Nov 07, 2015) [Release notes](http://bit.ly/JBMBuild163) 19 | - **1.6+build.162** (Nov 05, 2015) [Changelog](http://bit.ly/JBMDiffB159-B162) [Release notes](http://bit.ly/JBMBuild162) 20 | - **1.6+build.142** (Apr 05, 2015) [Changelog](http://bit.ly/JBMDiffB140-B142) [Release notes](http://bit.ly/JBMBuild142) 21 | - **1.6+build.140** (Feb 09, 2015) [Changelog](http://bit.ly/JBMDiffB138-B140) [Release notes](http://bit.ly/JBMBuild140) 22 | - **1.6+build.138** (Jan 24, 2015) [Changelog](http://bit.ly/JBMDiffB135-B138) [Release notes](http://bit.ly/JBMBuild138) 23 | - **1.6+build.135** (Jan 6, 2015) [Changelog](http://bit.ly/JBMDiffB123-B135) [Release notes](http://bit.ly/JBMBuild135) 24 | - **1.6+build.132** (Oct 12, 2014) [Changelog](http://bit.ly/JBMDiffB123-B132) [Release notes](http://bit.ly/JBMBuild132) 25 | - **1.5+build.123** (Aug 19, 2014) [Changelog](http://bit.ly/JBMDiffB120-B123) [Release notes](http://bit.ly/JBMBuild123) 26 | - **1.5+build.120** (Aug 14, 2014) [Changelog](http://bit.ly/JBMDiffB119-B120) [Release notes](http://bit.ly/JBMBuild120) 27 | - **1.5+build.119** (Jul 27, 2014) [Changelog](http://bit.ly/JBMDiffB118-B119) [Release notes](http://bit.ly/JBMBuild119) 28 | - **1.5+build.118** (Jul 14, 2014) [Changelog](http://bit.ly/JBMDiffB117-B118) [Release notes](http://bit.ly/JBMBuild118) 29 | - **1.5+build.117** (Jun 29, 2014) [Changelog](http://bit.ly/JBMDiffB102-B117) [Release notes](http://bit.ly/JBMBuild117) 30 | - **1.4+build.102** (Jun 07, 2014) [Changelog](http://bit.ly/JBMDiffB72-B102) 31 | - **1.3+build.72** (Mar 01, 2014) [Changelog](http://bit.ly/JBMDiffB71-B72) 32 | - **1.3+build.71** (Feb 26, 2014) [Changelog](http://bit.ly/JBMDiffB70-B71) 33 | - **1.3+build.70** (Feb 23, 2014) [Changelog](http://bit.ly/JBMDiffB68-B70) 34 | - **1.3+build.68** (Jan 02, 2014) [Changelog](http://bit.ly/JBMDiffB64-B68) 35 | - **1.2+build.64** (Nov 13, 2013) [Changelog](http://bit.ly/JBMDiffB59-B64) 36 | - **1.1+build.59** (Oct 20, 2013) [Changelog](http://bit.ly/JBMDiffB53-B59) 37 | - **1.0+build.53** (Oct 09, 2013) [Changelog](http://bit.ly/JBMDiffB51-B53) 38 | - **1.0+build.51** (Oct 06, 2013) [Changelog](http://bit.ly/JBMDiffB33-B51) 39 | - **1.0+build.33** (Aug 17, 2013) [Changelog](http://bit.ly/JBMDiffB30-B33) 40 | - **1.0+build.30** (Aug 13, 2013) [Changelog](http://bit.ly/JBMDiffB20-B30) 41 | - **1.0+build.20** (Aug 10, 2013) [Changelog](http://bit.ly/JBMDiffB14-B20) 42 | - **1.0+build.14** (Jul 21, 2013) [Changelog](http://bit.ly/JBMDiffB10-B14) 43 | - **1.0+build.10** (Jul 13, 2013) First public release of the plugin 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Jenkins CI Build Monitor Plugin 2 | 3 | [![Build Status](https://ci.jenkins.io/job/Plugins/job/build-monitor-plugin/job/master/badge/icon)](https://ci.jenkins.io/job/Plugins/job/build-monitor-plugin/job/master/) 4 | [![Jenkins Plugin](https://img.shields.io/jenkins/plugin/v/build-monitor-plugin.svg)](https://plugins.jenkins.io/build-monitor-plugin) 5 | [![Jenkins Plugin Installs](https://img.shields.io/jenkins/plugin/i/build-monitor-plugin.svg?color=blue)](https://plugins.jenkins.io/build-monitor-plugin) 6 | 7 | Build Monitor Plugin provides a highly visible view of the status of selected Jenkins jobs. 8 | 9 | It easily accommodates different computer screen sizes and is ideal as an Extreme Feedback Device to be displayed on a screen on your office wall. 10 | 11 | Have a question? Perhaps it's already been answered - check the [FAQ](#faq) section below. 12 | 13 | ## Features 14 | 15 | * Displays the status and progress of selected jobs. The view is updated automatically every couple of seconds using AJAX, so no "Enable Auto Refresh" needed. 16 | * Displays the names of people who might be responsible for "breaking the build". 17 | * Supports the [Claim plugin](https://plugins.jenkins.io/claim/), so that you can see who's fixing a broken build 18 | * Supports [View Job Filters](https://plugins.jenkins.io/view-job-filters/), so that you can easily create Build Monitors for "slow builds", "only failing", etc. 19 | * Supports [Build Failure Analyzer](https://plugins.jenkins.io/build-failure-analyzer/), so that you know not only *who*, but also *what* broke the build; [learn more](http://bit.ly/JBMBuild102) 20 | * Supports [CloudBees Folders Plugin](https://plugins.jenkins.io/cloudbees-folder/), so that you can have project- and team-specific nested Build Monitors; [learn more](http://bit.ly/JBMBuild117) 21 | * Supports [Pipeline Plugin](https://plugins.jenkins.io/workflow-aggregator/), so that the currently executing stage(s) are shown. 22 | * The number of columns and size of the font used is easily customisable, making it trivial to accommodate screens of different sizes. 23 | * UI configuration is stored in a cookie, making it possible to display different number of columns and using different font size on each of the screens at your office. 24 | * Can work in a colour-blind-friendly mode; [learn more](https://github.com/jenkinsci/build-monitor-plugin/issues/30#issuecomment-35849019) 25 | 26 | ## Your feedback matters! 27 | 28 | Found a bug or want to give feedback? Raise [an issue](https://github.com/jenkinsci/build-monitor-plugin/issues?state=open) 29 | or submit a pull request ([start with this mini-dev guide](https://github.com/jenkinsci/build-monitor-plugin/wiki/Development-Guide), it might come in handy). 30 | 31 | ## Setting up 32 | 33 | To create a new Build Monitor View, click on the "New View" tab, select "Build Monitor View" and select jobs you wish to display on the monitor. 34 | 35 | ![Setting up](docs/Setting_up.png) 36 | 37 | Simple, right? :-) You can have as many Build Monitor Views as you want - the most popular approach is to have one per team or one per project. 38 | 39 | # A picture is worth a thousand words 40 | 41 | ![Adding jobs](docs/1_Adding_jobs.png) 42 | ![Three columns view](docs/2_Three_columns_view.png) 43 | ![Supports Claim and Build Failure Analyzer plugins](docs/3_Two_columns_view_with_claim_and_build_failure_analyzer_plugins.png) 44 | ![Colour-blind mode](docs/4_Colour_blind_mode.png) 45 | 46 | ## (A)TDD 47 | 48 | If you'd like to understand more about the logic behind the Build Monitor Plugin, 49 | have a look at the [tests that drove the design](/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins). 50 | 51 | ## FAQ 52 | 53 | ### How do I let my teammates know that I'm fixing a broken build? 54 | 55 | By claiming it. Build Monitor supports Jenkins [Claim Plugin](https://plugins.jenkins.io/claim/), so once you have it installed, enable "Broken build claiming" in the "Post-build actions" of your Jenkins job. From now on you'll be able to claim any further broken builds and Build Monitor will pick it up. 56 | 57 | You might also be interested in a [script](https://wiki.jenkins.io/display/JENKINS/Allow+broken+build+claiming+on+every+jobs) that enables claiming on all your Jenkins jobs. 58 | 59 | ### How do I know what broke the build? 60 | 61 | Wouldn't it be great to know _what_ made your build fail? Well of course it would. Build Monitor supports Jenkins [Build Failure Analyzer Plugin](https://plugins.jenkins.io/build-failure-analyzer/) so get it, teach it, and Build Monitor will tell you what the Failure Analyzer found out. 62 | 63 | ### I have too many jobs on one screen, what should I do? 64 | 65 | You have several options here: 66 | 67 | 1. **review the granularity of your jobs**: If you have too many low-level jobs displayed on one screen, consider consolidating them using [Promoted Builds Plugin](https://plugins.jenkins.io/promoted-builds/) or [MultiJob Plugin](https://plugins.jenkins.io/jenkins-multijob-plugin/) 68 | 1. **use job filters**: Build Monitor supports Jenkins [View Job Filters Plugin](https://plugins.jenkins.io/view-job-filters/), if you have it installed 69 | 1. get a bigger screen ... 70 | 71 | ### Red and green colours are lovely, but I'm colour blind ... 72 | There's a colour blind mode you can [enable in the Settings](https://github.com/jenkinsci/build-monitor-plugin/issues/30#issuecomment-35849019) 73 | 74 | ## Open Source Software Used 75 | 76 | * [Angular.js](http://angularjs.org/) 77 | * [Angular-slider](http://prajwalkman.github.io/angular-slider/) 78 | * Customised [Angular Bootstrap](http://angular-ui.github.io/bootstrap/) 79 | * [HTML5 Boilerplate](http://html5boilerplate.com/) normalize.css 80 | * [OpenSans font](http://www.google.com/fonts/specimen/Open+Sans) by Steve Matteson 81 | 82 | ## Friends of Build Monitor 83 | 84 | Build Monitor is continuously delivered to a Jenkins near you thanks to: 85 | * the time and commitment of [the author](http://smartcodeltd.co.uk/) and [the contributors](https://github.com/jenkinsci/build-monitor-plugin/graphs/contributors) 86 | * the [acceptance tests](/build-monitor-acceptance/src/test/java) 87 | --------------------------------------------------------------------------------