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