1. 程式人生 > >Jenkins專案實戰之-釘釘提醒外掛二次開發舉例

Jenkins專案實戰之-釘釘提醒外掛二次開發舉例

       本篇我們來討論下關於jenkins社群中釘釘提醒這個外掛的二次開發過程。為什麼需要二次開發呢,很簡單,這個外掛只是提供了最基本的構建後的提醒,有時候,我們需要一些額外的功能。例如,我們在打完app的包後,利用這個外掛是可以傳送提醒,但是點選標題,這個外掛預設跳轉的是jenkins上當前構建號的頁面。我的實際工作中,有一個需求,使用者在釘釘群,點選這個成功打包提醒,希望跳轉到一個下載包的頁面。點選失敗提醒,和改外掛的原功能一樣,直接跳轉到當前構建失敗的這個構建號頁面。

可以先看看作者的寫的效果圖介紹,大概瞭解下提醒的效果。但是文章沒有介紹點選可以跳轉到構建號的頁面。如果可以,先安裝jenkins環境,然後到外掛管理下載這個釘釘提醒外掛,自己試試提醒效果。

需求:使用者點選打包成功提醒,跳轉到下載路徑,點選失敗打包提醒,跳轉到當前構建號頁面。

需求分析

       原作者實現了打包成功或者失敗,點選標題都跳轉到當前構建號的頁面。這個功能是通用的,例如網站專案程式碼構建就沒有下載功能。但是我們現在做的是APP自動化構建,肯定要給使用者提供下載功能。思考一下,也就是說,我們在這個外掛的介面,新增一個下載連結的輸入控制元件,打包成功傳送提醒這個方法,修改原來的連結,替換成使用者輸入的下載連結,這樣打包成功提醒,點選就可以調整到下載包的web介面。

不要有在程式碼寫死打包下載路徑的想法,這個想法是愚蠢的。因為換了一個環境,打包下載的路徑可能就要換。屬於,這個下載路徑我們需要在前端設計一個文字輸入框,讓使用者填寫,程式碼裡獲取這個就可以。我們只動打包成功傳送提醒訊息這個程式碼,失敗的程式碼不用動。

        這是一個很小的需求變動,我們可以通過這種二次開發過程,窺探下jenkins的外掛開發過程。成功了,也好給自己一個滿足感,會了這個基本,接下來,我們還可以針對提醒訊息內容進行優化,再次開發新的功能。

具體二次開發過程

1. 前提條件

做這個二次開發是需要一些前提條件的:

1)Java程式碼閱讀能力

2)釘釘聊天軟體,提前設定好機器人

3)IDEA Java IDE開發工具

4)本地安裝好Maven環境

5)Jenkins安裝好,外掛需要安裝到Jenkins上進行測試

2. Github下載原始碼

       下載原始碼,一般有兩個方法,git命令下載或者直接下載專案zip包。由於我部落格文章中介紹了git的基本命令,所以,這裡我選擇git clone原始碼到本地。

1)開啟git bash視窗

如果沒有安裝git,請到部落格對應文章去查詢方法,或者百度,或者下載zip包的原始碼,忽略本步驟。

在桌面,右鍵點選git bash here


2)輸入如下命令

首先,我們獲取這個github專案的地址,如下圖紅框,如果不會git,選擇Download ZIP這個按鈕下載原始碼到本地。

在git bash輸入如下命令


       由於我是在桌面開啟git bash的,所以下載的專案的資料夾會在桌面生成,資料夾名稱叫dingding-notifications-plugin,根據上圖來看,原始碼是成功下載到本地。


3)  檢查原始碼是否成功下載

       開啟桌面原始碼資料夾,點選展開src,和該專案github地址對比下,網路沒有問題,git命令肯定幫你成功下載原始碼到本地。


3. 編輯器開啟下載原始碼

       原始碼下載好了,我們需要用IDEA開啟。開啟IntelliJ IDEA之後,點選File-New-Moudle from existing source,選擇剛才桌面的dingding資料夾,效果如下。


       一般來說,我們都要右鍵pom.xml-Maven-DownloadSources,這樣開啟裡面的java檔案就不會報各種錯誤,特別是哪些匯入包語句。或者點選右鍵reimport選單。

展開原始碼,得到如下結構圖。


       主要就是編輯config.jelly新增前端一個文字輸入框,用來接收使用者的包下載地址。在上面三個方法和一個藉口,插入對應獲取下載包地址的方法,並且修改成功狀態下打包的json字串中的url換成打包下載路徑的URL。

4. 二次開發過程

       為了區別開發前後效果,我先在Jenkins上安裝一個線上下載的外掛。就是在外掛管理,搜尋dingding,然後點選下載安裝。


新建一個job, 構建選擇bat命令


因為我們僅僅測試釘釘提醒外掛,隨便寫一個dos命令來作為構建配置。構建後選擇釘釘提醒外掛。


       我就是在jenkins URL 和釘釘access token之間插入一個輸入框,用來獲取打包下載路徑。這個功能就是本篇的介紹的所謂的二次開發。真正的開發就下面開始的過程。

1)新增一個下載包路徑

這個最簡單,我們先來實現簡單的。所有的前端頁面的空間佈局都寫在config.jetty這個檔案中。


這個程式碼和前面構建後效果圖對比,你就很快明白了。所以,我們插入一個下載包路徑的文字輸入框應該是這樣寫。


紅框就是我新增的控制元件部分的程式碼。直接複製,然後修改下就可以。這個檔案如果沒有出錯,我們暫時不動它,只有到最後測試的時候才知道是什麼效果。

2)構造一個獲取使用者輸入buildURL的方法

在上面的jetty配置檔案中,我們可以參考accessToken這個field是如何寫獲取使用者輸入的token的方法。

我們可以在DingdingNotifier.java找到accessToken是定義的一個類屬性。所以,我們這裡也定義一個buildURL的類屬性並且新增get方法
如果你在開啟程式碼問題,出現匯入包語句錯誤,你可以手動點選錯誤地方,選擇新增到library,有些包確實不會自動幫你匯入到專案的library。

3)修改下構造方法,buildURL新增進入構造方法

 

4)開啟DingdingServiceImpl.java,修改構建成功提醒的方法

5)修改構建成功方法的提醒

因為我們要構建成功,點選跳轉到下載頁面。

 

6) 返回到DingdingNotifier.java檔案,修改如下
因為我們修改了DingdingServiceImpl的建構函式,所以這個地方也需要新增buildURL這個引數。儲存程式碼,下面開始打包測試。

5. 打包進行測試

打包測試,我們在jenkins上是需要得到一個.hpi的檔案,下面就教你如何打包。

1)開啟cmd,進入到桌面dingding-notifications-plugin這個資料夾


2)使用mvn package打包


3)打包成功


4)檢視打包


根據上面的路徑,拷貝出.hpi檔案到桌面,下一步,我們要上傳到jenkins來進行測試

5)上傳安裝測試

       由於我前面線上安裝了釘釘提醒這個外掛,所以我這裡先要解除安裝,然後外掛管理選擇高階,然後上傳。

點選上傳按鈕,開始安裝。可能需要重啟jenkins服務。


6)構建後釘釘提醒外掛效果

看到這裡,我們成功添加了一個APP包下載地址的輸入框。構建測試需要釘釘群,新增機器人,具體就不介紹了。

我在APP包下載地址輸入框輸入https://www.baidu.com,實際專案,可以設定你們tomcat配置好的docbase的地址。然後輸入釘釘群設定的機器人的token。

 

7)實際構建測試

我這邊測試了下,點選紅框位置,會跳轉到百度首頁,這個就證明了,我實現了這個需求。

 

       以上就是關於釘釘提醒這個外掛的二次開發的完整過程,主要是這個開源專案程式碼很少,容易讀懂,而且我們新增的新的需求也很簡單,比較容易實現。通過這個實戰,讓我們基本瞭解一個jenkins外掛的開發流程中的部分知識,至少知道mavn專案的如何打包,而且還對我們實際工作的專案有幫助,這個就稍微有點成就感。