1. 程式人生 > >Jenkins外掛開發進階篇之擴充套件外掛功能

Jenkins外掛開發進階篇之擴充套件外掛功能

之前寫過一篇文章是關於如何開發jenkins外掛,主要講述了開發jenkins外掛時需要準備的環境,如何新建一個jenkins外掛工程,以及對工程專案目錄結構的解析。

本文是jenkins外掛開發的進階篇,主要講述如何擴充套件jenkins外掛的功能。如下圖所示:


(1)Job任務側邊欄新增選項

(2)在Job任務中新增新頁面

實現Jenkins外掛以上兩個功能,需要關注以下兩個問題。

1、  如何向Job專案主頁面中回傳的資料

2、  如何在Job專案中新增新頁面

廢話少說,直入正題吧。

一、傳遞資料

首先在FireLineBuilder類的同一目錄下新建一個FireLineScanCodeAction類,該類需要實現Action介面。Action介面是擴充套件jenkins外掛的一個基本構建介面,其他還有很多不同功能的子介面,例如:BuildBadgeAction,runAction2,HealthReportingAction,SimpleBuildStep.LastBuildAction,ProminentProjectAction等等。

         Action介面中有三個方法必須要實現:getUrlName()、getIconFileName()和getDisplayName()。以上三個方法分別設定該Action的URL地址名稱、顯示圖示地址以及顯示的名稱。

當需要傳遞資料到Job任務頁面中時,我們需要在FireLineScanCodeAction類中新增一個欄位,以及get方法。

原始碼如下所示:

package com.qihoo.fireline;
import hudson.model.Action;
public class FireLineScanCodeAction implements Action {
	private String name;
    public FireLineScanCodeAction(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
	(…)
}

Action的實現類已經準備好了,現在我們需要在job構建時為實現類新增例項。在FireLineBuilder類中的perform方法中為本次構建新增FireLineScanCodeAction類的例項。

原始碼如下:

(...)
	@Override
    public void perform(Run<?, ?> run, FilePath workspace, Launcher launcher, TaskListener listener) throws InterruptedException, IOException {
        run.addAction(new FireLineScanCodeAction(" FireLine ")); 
    }
(...)

二、新增新頁面

首先,我們需要回到FireLineScanCodeAction類中為此Action定義圖示主題名稱和URL地址名稱。

原始碼如下:

  @Override
    public String getIconFileName() {
        return "document.png"; 
    }
    @Override
    public String getDisplayName() {
        return " FireLine Static Analysis "; 
    }
    @Override
    public String getUrlName() {
        return "fireline"; 
    }

新增好相關資訊後,需要在src/main/resources/com/qihoo/fireline/目錄下新增FireLineScanCodeAction/目錄,此目錄與FireLineScanCodeAction類相對應。在src/main/resources/com/qihoo/fireline/FireLineScanCodeAction/目錄下新建index.jelly檔案。

檔案內容如下:

(…)
    <l:layout title="fireline"> 
        <l:main-panel> 
            <h1> 
                Name: ${it.name} 
            </h1>
        </l:main-panel>
    </l:layout>

此時,頁面已經新增完成。使用命令mvn hpi:run執行,瀏覽器開啟頁面http://localhost:8080/jenkins新建一個任務,命名為firelineTest。到專案配置中新增”ExecuteFireLine”構建選項後儲存。返回到firelineTest專案中可看到側邊欄中增加“FireLine Static Analysis”選項。

到此一個有回傳資料的側邊欄選項就新增完成了。

後續還會介紹如何更改為自定義的圖示,以及如何擴充套件ProminentProjectAction介面等進階內容。例如火線(FireLine )的jenkins外掛的圖示顯示。如下圖:

目前相關Jenkins外掛的開發方面的資料比較少,如有紕漏還望指正。