Windows下Jenkins自動拉取編譯SVN專案併發布Tomcat和Jboss
本文主要記錄一些重要的配置,忽略Jenkins的安裝。配置主要分為三個重要部分:
1、外掛配置
主要涉及3個外掛的安裝。
Deploy to container Plugin:This plugin takes a war/ear file and deploys that to a running remote application server at the end of a build。主要是用來發布打包後的war檔案到容器。running remote application server意味著該伺服器需要是執行狀態的。該外掛支援的版本如下:
Tomcat 4.x/5.x/6.x/7.x
JBoss 3.x/4.x
Glassfish 2.x/3.x
注意:關於選用Jboss作為伺服器來發布專案,如果選用高於4.X的版本,可能回出現Failed to create deployer ...(container [id=[jboss7.x]],deployer type[romate])的問題,可能是版本問題,但是不知為何該外掛的container列表裡面有jboss7的選項。
Maven Integration plugin:主要支援Maven,Maven專案需要
Subversion Plug-in:支援SVN,從SVN上拉取程式碼
Jboss外掛的安裝位置如下圖,系統管理--》外掛管理:
2、2、全域性工具配置
配置位置:系統管理--》全域性工具配置
主要配置了2個工具:
1、JAVA
2、Maven
配置很簡單,不勾選自動安裝,選自你本地的工具路徑即可,注:環境變數要配置
配置如下圖所示:
3、檢視配置
檢視的配置有很多,其中重要的部分如下:
1、General
丟棄舊的構建:一種構建規則
2、原始碼管理
Repository URL:SVN的專案地址 (必填)
Credentials:SVN的使用者名稱密碼 (必填)
Repository depth: Jenkins在執行checkout、update程式碼時,所取出的程式碼的範圍。預設我們選擇infinity就可以
Quiet check-out:Use 'svn update' whenever possible, making the build faster. But this causes the artifacts from the previous build to remain when a new build starts.
3、構建觸發器
Build whenever a SNAPSHOT dependency is built :依賴於快照構建,當專案修改後構建
GitHub hook trigger for GITScm polling:通過Github鉤子觸發
其他工程構建後觸發:當本job依賴的job,被build時,執行本job
定時構建:定時構建專案
輪詢 SCM:輪詢構建專案 Schedule的配置規則是有5個空格隔開的字元組成,從左到右分別代表:分 時 天 月 年。*代表所有
4、Build and Post Steps
Root POM:編譯的POM根檔案 (Maven專案必須)
Goals and options:打包的一些引數 (看實際情況)
Run only if build succeeds:編譯成功後執行指令碼 (一般勾選這個)
Run only if build succeeds or is unstable:只有在構建成功或不穩定時才執行指令碼
Run regardless of build result:不管構建結果如何執行指令碼
5、構建後操作
WAR/EAR files:構建後war包存放在Jenkins的相對路徑(必填)
Context path:專案釋出後的虛擬路徑,此路徑會發布到容器中(必填)
Containers:釋出的容器,tomcat就選tomcat,jboss就選jboss,兩者的配置沒什麼大的區別
Credentials是容器訪問的使用者名稱和密碼(沒有設定就會用預設使用者密碼登陸)
URL是訪問容器的根路徑(必填)
最後,可以在檢視的選單欄可以點選立即構建,並檢視構建的log日誌。
因為Deploy to container Plugin支援的伺服器的版本受限,在使用高版本伺服器的時候,該外掛並不能正常支援釋出。
因此,在Jnekins生成wa'r包之後,我們可以執行批命令來自動釋出。
windows下發布bat命令如下(其實就是把wa'r包從jenkins拷貝過來):
net stop JBossWebServer
del "E:\work\soft\worksoft\jboss\jboss-eap-7.1\standalone\deployments\riw.war"
echo "執行命令 del E:\work\soft\worksoft\jboss\jboss-eap-7.1\standalone\deployments\riw.war"
rd /s/q "E:\work\soft\worksoft\jboss\jboss-eap-7.1\standalone\deployments\riw"
echo "執行命令 rd /s/q E:\work\soft\worksoft\jboss\jboss-eap-7.1\standalone\deployments\riw"
copy /y "C:\Users\hejun\.jenkins\workspace\RIW_JBOSS2\target\riw.war" "E:\work\soft\worksoft\jboss\jboss-eap- 7.1\standalone\deployments\"
net start JBossWebServer
這樣就可以了。