Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How Jenkins updates the Weather report for Build Jobs?

Tags:

jenkins

What mechanism/statistics does Jenkins follow to update the Weather information regarding the Build Jobs?

Jenkins Weather Dashboard

like image 968
Anshul Patel Avatar asked Apr 26 '17 06:04

Anshul Patel


1 Answers

Check out https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/HealthReport.java

You can then find the following code there:

// These are now 0-20, 21-40, 41-60, 61-80, 81+ but filenames unchanged for compatibility
private static final String HEALTH_OVER_80 = "icon-health-80plus";
private static final String HEALTH_61_TO_80 = "icon-health-60to79";
private static final String HEALTH_41_TO_60 = "icon-health-40to59";
private static final String HEALTH_21_TO_40 = "icon-health-20to39";
private static final String HEALTH_0_TO_20 = "icon-health-00to19";

private static final String HEALTH_OVER_80_IMG = "health-80plus.png";
private static final String HEALTH_61_TO_80_IMG = "health-60to79.png";
private static final String HEALTH_41_TO_60_IMG = "health-40to59.png";
private static final String HEALTH_21_TO_40_IMG = "health-20to39.png";
private static final String HEALTH_0_TO_20_IMG = "health-00to19.png";
private static final String HEALTH_UNKNOWN_IMG = "empty.png";

The code indicates that if your successful builds are over 80%, you will see the sunny weather icon.

If your successful builds is between 60%-79%, you will see see an image named health-60to79.

...

You can find the images at https://github.com/jenkinsci/jenkins/blob/master/war/images. They are named health-00to19.svg, health-20to39.svg, health-40to59.svg, health-60to79.svg, and health-80plus.svg.

HealthReport is the mechanism used to update the weather icon

public HealthReport(int score, String iconUrl, Localizable description) {
    this.score = score;
    if (score <= 20) {
        this.iconClassName = HEALTH_0_TO_20;
    } else if (score <= 40) {
        this.iconClassName = HEALTH_21_TO_40;
    } else if (score <= 60) {
        this.iconClassName = HEALTH_41_TO_60;
    } else if (score <= 80) {
        this.iconClassName = HEALTH_61_TO_80;
    } else {
        this.iconClassName = HEALTH_OVER_80;
    }
    if (iconUrl == null) {
        if (score <= 20) {
            this.iconUrl = HEALTH_0_TO_20_IMG;
        } else if (score <= 40) {
            this.iconUrl = HEALTH_21_TO_40_IMG;
        } else if (score <= 60) {
            this.iconUrl = HEALTH_41_TO_60_IMG;
        } else if (score <= 80) {
            this.iconUrl = HEALTH_61_TO_80_IMG;
        } else {
            this.iconUrl = HEALTH_OVER_80_IMG;
        }
    } else {
        this.iconUrl = iconUrl;
    }
    this.description = null;
    setLocalizibleDescription(description);
}
like image 194
Brian Avatar answered Nov 15 '22 04:11

Brian