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插件的開發方面的資料比較少,如有紕漏還望指正。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章