案例:簡單實作監控所有jenkins job,實作當jenkins job執行完成之後進行消息通知
1、案例模版下載下傳
前置條件:jdk環境、maven、網絡暢通(下載下傳依賴)
具體步驟可以照着jenkins官方文檔: https://www.jenkins.io/doc/developer/tutorial/prepare/
jenkins提供了幾套模版案例,我們可以按照需求進行案例下載下傳,節省開發時間。
mvn -U archetype:generate -Dfilter="io.jenkins.archetypes:"
可能出現的問題:執行指令後可能你會發現執行sucess了,沒有文檔中出現的1-5選擇。本地也是空的。解決方法是進入maven的conf/settings.xml中,把遠端倉庫位址改成預設官方maven2遠端倉庫位址:http://repo1.maven.org/maven2 。我之前配置的是aliyun倉庫,出現的情況就是無法下載下傳。
2、環境調試
為了友善開發調試,我下載下傳的是4。這邊有一點好處是,開發調試比較友善。執行 mvn hpi:run ,不需要自己再下載下傳安裝jenkins了,直接執行指令,當運作成功後通路http://localhost:8080/jenkins/就可以通路到調試jenkins平台,另外内容是儲存着的,停止後下次執行建立的job資訊這些都是存在的,不會還原。
3、開發測試
因為是需要監聽job執行完畢後進行消息通知,是以自己需要用到RunListener
自己建一個類,比如BuildStatsListener.java,一定要加@Extension,不然不會被執行到。
@Extension
public class BuildStatsListener extends RunListener<Run<?,?>>{
因為是監聽job執行完畢,并且發送消息,是以需要複寫onCompleted方法。以下列舉了幾個自帶的jenkins job參數和jenkins job自定義參數的擷取(這裡在job中配置一個自定義參數triggerUser)。
@Override
public void onCompleted(Run<?,?> run, @NonNull TaskListener listener){
String jobName = run.getParent().getName();
try {
//擷取jenkins job配置中的自定義參數
String triggerUser = run.getEnvironment(listener).get("triggerUser");
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
int number = run.getNumber();
String jobUrl = run.getUrl();
String status = run.getResult().toString();
......
//調用消息通知接口,推送消息
}
其它功能實作(所有的jenkins類都在這裡,可以自行檢視): https://javadoc.jenkins.io/allclasses-noframe.html