系統基本配置
這裏主要涉及的是項目中使用的其他基礎服務(maven、git、jdk、ant等)路徑,如果服務器上相關環境變量信息已經配置,這裏也可以省略,如果配置了,jenkins在選擇的時候會多一些可選項
Manage Jenkins ——> Clobal Tool Configuration
jenkins任務配置
http://ip:端口/jenkins ——>New Item
Maven任務
當前的job涵蓋了打包+ssh拷貝到目標服務器+打包等內容,比較好的思路是將打包和部署兩部分都單獨設置job,打包成功以後觸發部署job。由於目前部署的服務器比較少,相對環境比較簡單,因此就採用當前這種簡單的做法。
maven 任務配置demo
General
任務(job)總體的一些配置信息,這裏只針對我項目使用的部分展開描述
- Description 項目描述信息
- Discard old builds 項目歷史的記錄保留的相關設置策略
- This project is parameterized 任務的配置信息,需要插件parameterized-trigger纔可以使用
This project is parameterized
每一種類型的參數使用略有差異,目前介紹項目中使用了的幾種:
- Git Parameter 需要安裝插件git-parameter,可以選擇
設置頁面
使用頁面
- Extensible Choice——>File Parameter 需要安裝插件extensible-choice-parameter 使用的效果類似Choice Parameter,但是支持的形式更多,可以針對系統的一些配置來做選擇。勾選EditAble的話支持手動修改選擇結果
設置頁面
使用頁面
- String Parameter 手工輸入的String類型的變量
設置頁面
使用頁面
- Choice Parameter 下來選擇的預設String 類型變量,不支持自定義編輯
設置頁面
使用頁面
Source Code Management
任務(job)源碼部分配置信息,支持svn、git、等等。這塊都需要安裝相關的插件才能使用功能。
- Git 代碼管理需要使用git插件,此處的例子git分支使用了Git Parameter取得的參數;
Additional Behaviours 裏還有很多可選的操作可以使用,可以根據需要自行選擇,demo裏只選擇了Wipe out repository & force clone
Build
maven打包的相關配置
- Root POM pom文件的路徑,是以當前項目workspace爲默認路徑
- Goals and options 執行的maven指令
Post Steps
完成打包以後需要將程序包拷貝到相應的服務器上做部署,只有當build成功的時候才設置執行這部分腳本。
使用ssh進行文件拷貝已經部署的操作需要配套的實現免密登錄,不然在腳本運行過程中出現需要輸入密碼的情況就會卡住,而且目前的ssh Publicshers 默認就需要實現ssh免密登錄的配置纔可以用.
其他類型任務
其他的項目類比maven項目,就是Build這一塊內容有差異,可以不做執行maven指令,轉而執行其他的操作,其餘的配置均類似,這裏就不做具體完整展開,僅針對特殊的部分做介紹。
ant+jenkins+jmeter 項目
使用ant+jenkins+jmeter來跑主要是爲了省事,可以使用ant的相關組件來生成html的結果報告。簡單的處理的話,使用命令行模式運行jmeter腳本也是沒有問題。
Build ant部分配置
- uat-build.xml 相關模板資源鏈接
jemter-Post-bulid Action 生成html報告
ant+jenkins+jmeter使用過程中出現而問題以及解決方案
配置的過程中陸續的還是遇到一些問題,這裏做簡單的列舉
Jmeter 運行報錯ApacheJMeter.jar 中的class找不到
將$JMETER_HOME/bin/ApacheJMeter.jar 加入到CLASS_PATH裏
Html樣式失效問題處理
ant腳本執行傳空參問題
目前的demo有一點特殊,項目中jmx腳本存在多個,job中需要動態指定運行哪個腳本,如果不選則默認運行全部腳本,這裏做了特殊處理。
<property name="jmxname" value="${jmxname}" />
<condition property="jmeter.jmxname" value="${jmxname}" else="*.jmx">
<!-- jmeter.jmxname設置了值而且值非空的情況下才返回true,此時不採用默認值 -->
<and>
<!--如果屬性jmxname不存在則返回false -->
<isset property="jmxname" />
<not>
<!--如果屬性jmeter.jmxname非空在則返回true -->
<equals arg1="${jmxname}" arg2="" />
</not>
</and>
</condition>
任務之間的觸發
- uat-trigger-other-job 觸發源工程,該工程未做任務關聯其他工程的配置,但是uat-trigger-job工程通過關聯它來觸發,該工程無法傳參給uat-trigger-job
- uat-trigger-job 在當前任務上配置觸發,通過uat-trigger-other-job來觸發當前任務
從下圖可知, uat-trigger-other-job任務觸發了uat-trigger-job任務,但是uat-trigger-other-job其參數並沒有傳遞給uat-trigger-job任務
- uat-trigger-job2 在當前任務上配置觸發,通過該任務來觸發下一個任務uat-triggered-job
- uat-triggered-job 被觸發工程,該工程未做任務關聯其他工程的配置,但是uat-trigger-job2工程通過關聯該工程觸發它,同時傳遞參數給uat-triggered-job
從下圖可知, uat-trigger-job2任務觸發了uat-triggered-job任務,但是uat-trigger-job2其參數傳遞給uat-triggered-job任務
當前任務觸發其他任務配置demo(不可傳參)
uat-trigger-other-job
uat-trigger-job
當前任務依賴其他任務觸發運行配置demo(可傳參)
uat-trigger-job2
uat-triggered-job
jenkins任務簡單使用
主要針對任務的運行和任務的日誌查看做簡單介紹
運行任務
查看任務日誌
http://ip:端口/jenkins/job/任務名稱/記錄index/console
注意 其他類型job查看詳細日誌的方式有所差異,當前的jenkins版本需要多走一層
http://ip:端口/jenkins/job/任務名稱/default/記錄index/console
查看jmeter html報告
jmeter的這個job就是一個特殊的非maven類型任務,這個html報告可以自行配置,如果網絡通暢都可以配置郵件發送的相關信息