版本JenKins:2.19.1, Maven:3.1
環境要求:
-
Java 7
-
256MB free memory
-
1GB+ free disk space
Jenkins官網: https://jenkins.io/index.html
官方文檔:https://wiki.jenkins-ci.org/display/JENKINS/Home
jenkins是一個廣泛用於持續構建的可視化web工具,持續構建說得更直白點,就是各種項目的"自動化"編譯、打包、分發部署。jenkins可以很好的支持各種語言(比如:java, c#, php等)的項目構建,也完全兼容ant、maven、gradle等多種第三方構建工具,同時跟svn、git能無縫集成,也支持直接與知名源代碼托管網站,比如github、bitbucket直接集成。
網上對於Jenkins1.x的資料較多,但是對於Jenkins2.x的資料較少,而這兩個版本之間變化還是很大的。
下載后是一個war包(也可以選擇windows installer包,最新版本目前沒有提供)
將war包放進tomcat即可。
初始化配置
訪問,如:127.0.0.1:8088/Jenkins
第一次要求輸入密碼,初始密碼在${USER_HOME}\.jenkins\secrets\initialAdminPassword文件中查看。然后需要等到十來分鍾,
等Jenkins初始化結束進入下一步。
選擇安裝建議的插件。接下來就是安裝基本的插件(由於網速與服務器原因,比較慢。要等上幾十分鍾到幾個小時)
這些推薦的插件,目前我們關心的是Subversion Plugin-in ,SSH Slaves Plugin。
可供選擇的jenkins2 插件鏡像列表:
Jenkins 所有鏡像列表: http://mirrors.jenkins-ci.org/status.html
比如日本的鏡像: http://mirror.esuni.jp/jenkins/, http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/, http://ftp.tsukuba.wide.ad.jp/software/jenkins/
德國的鏡像: http://jenkins.mirror.isppower.de/ , http://mirror.yandex.ru/mirrors/jenkins/
官方的鏡像: http://mirrors.jenkins-ci.org/, http://archives.jenkins-ci.org/
然后會提示設置管理員用戶和密碼,如下:
進入jenkins
經過以上的步驟jenkins已經安裝完成。
JDK及Maven
在部署你的項目之前你需要jdk,maven的信息告知Jenkins。
-
點擊系統管理->Global Tool Configuration:
jdk的JAVA_HOME必須和你環境變量里的jdk保持一致。
Maven:
創建一個新任務
之后進入任務配置界面:
配置一下工作空間
問題:在這里會遇到不支持Repository URL中含中文的情形:這里我們需要配置Jenkins所在的tomcat的Server.xml文件,修改:加上:URIEncoding="UTF-8"
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
保存重啟Jenkins所在tomcat即可解決,選擇所配置的用戶,上面的紅色錯誤也不會出現了。
接下來就是構建
構建配置
maven version : 選之前錄入的maven,pom選pom文件所在的相對位置(此處是相對svn目錄的位置)。
點擊save后,點擊立即構建,就可以構建了,可以在你的工作空間中發現你想要的東西了(war包)。
如果出現下面的問題:
方式一:這個問題只需要修改你的pom.xml即可。 加入<defaultGoal>install</defaultGoal>
方式二:當然也可以這樣配置:
定時構建配置
規則:
MINUTE Minutes within the hour (0–59)
HOUR The hour of the day (0–23)
DOM The day of the month (1–31)
MONTH The month (1–12)
DOW The day of the week (0–7) where 0 and 7 are Sunday.
指定順序為MINUTE HOUR DOM MONTH DOW
在某個域指定多個值的規則是:
- * specifies all valid values
- M-N specifies a range of values
- M-N/X or */X steps by intervals of X through the specified range or whole valid range
- A,B,...,Z enumerates multiple values
如果要定期執行任務,必須提供H (for "hash")標識。
比如0 0 * * *會在同一時間執行所有任務,而使用H H * * *也會在每天執行一次任務,但是並不是同一時間,這樣就可以節省很多資源。
H還可以用於范圍:H H(0-7) * * * 標識在每天12:00-7:59之間的某個時間執行任務。
H * * * * 代表每個小時執行一次
H/15 * * * *每15分鍾執行一次。
H(0-29)/10 * * * * every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)
# once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 3:45 PM every weekday.
45 9-16/2 * * 1-5
# once in every two hours slot between 9 AM and 5 PM every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)
H H(9-16)/2 * * 1-5
# once a day on the 1st and 15th of every month except December
H H 1,15 1-11 *
自動部署
自動部署到tomcat
自動部署需要一個容器,那Jenkins是怎么知道你的容器的呢?容器插件
首頁-》系統管理-》管理插件
搜索deploy,很快就會找到這個deploy to container plugin,安裝完記得重啟。
這個由於網絡原因下載會失敗,這個時候需要設置鏡像站點:
系統設置-》插件-》高級-》Update Site:
默認為: http://updates.jenkins-ci.org/update-center.json
我們改為一個日本的鏡像: http://mirror.esuni.jp/jenkins/updates/update-center.json
接着選你的項目-》配置
構建后操作
-
WAR/EAR files:是相對於你前面配置的工作空間的。
-
Context path:是你容器部署的目錄,如果是tomcat,那么在webapps下,如果你不想要項目名稱的話選"\",填寫"ROOT"是不可以的。
-
Containers: tomcat7。當然你要有manager用戶信息。在tomcat目錄下的conf目錄,tomcat-users.xml修改如下:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status" username="tomcat"/>
保存文件。同時保存Jenkins。
先啟動你的tomcat,再次點擊立即構建。
如上,證明你成功了!打開瀏覽器訪問下工程確認一下。
自動部署到Weblogic
首先安裝Deploy WebLogic Plugin插件。安裝好之后,點擊
系統配置-全局配置,滑到WebLogic Deployment Plugin出進行配置
其中additional classpath寫上weblogic library path :
-
for WLS 8.X /pathtojar/weblogic.jar
-
for WLS 10.3 /pathtojar/wlfullclient.jar
-
for WLS 12.1 /pathtojar/wlthint3client.jar.
wlfullclient.jar生成方法:(http://docs.oracle.com/cd/E12840_01/wls/docs103/client/jarbuilder.html)
進入weblogic的安裝目錄例如C:\Oracle\Middleware\wlserver_10.3\server\lib,
運行 java -jar wljarbuilder.jar就能生成wlfullclient.jar文件
如果存在堆溢出,可以把-Xmx調大一點。
這個Congiguration File的寫法如下
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.jenkinsci.plugins/WeblogicDeploymentPlugin"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://org.jenkinsci.plugins/WeblogicDeploymentPlugin plugin-configuration.xsd">
<weblogic-targets>
<weblogic-target>
<name>my_managed_server1</name>
<host>_weblogic.admin.server.host_</host>
<port>_weblogic.admin.server.port_</port>
<login>_weblogic.admin.server.login_</login>
<password>_weblogic.admin.server.password_</password>
<authMode>BY_KEY</authMode>
<userconfigfile>P:\Documents\perso\dev\wls-deploy-plugin\wls_userConfig.properties</userconfigfile>
<userkeyfile>P:\Documents\perso\dev\wls-deploy-plugin\wls_userConfig.key</userkeyfile>
</weblogic-target>
<weblogic-target>
<name>my_managed_server2</name>
<host>_weblogic.admin2.server.host_</host>
<port>_weblogic.admin2.server.port_</port>
<login>_weblogic.admin2.server.login_</login>
<password>_weblogic.admin2.server.password_</password>
<authMode>BY_LOGIN</authMode>
</weblogic-target>
<weblogic-target>
<name>my_managed_server3</name>
<host>_weblogic.admin.server.host_</host>
<port>_weblogic.admin.server.port_</port>
<login>_weblogic.admin.server.login_</login>
<password>_weblogic.admin.server.password_</password>
<!-- used to transfer by FTP the component flagged as library to the WL machine -->
<ftpHost>_weblogic.remote.host_</ftpHost>
<ftpUser>_weblogic.remote.user_</ftpUser>
<ftpPassowrd>_weblogic.remote.password_</ftpPassowrd>
<remoteDir>/remote/path/used/to/transfer/libraries</remoteDir>
</weblogic-target>
</weblogic-targets>
</config>
最后一個配置FTP其實是用來部署依賴庫,而不是整個項目的。
注意:每次修改default.xml文件后都需要重新在系統設置中apply-save才能生效。
認證模式authmode
-
BY_KEY : uses a keystore file and a config file
-
BY_LOGIN : uses a login/password (this is the default authentication mode).
接下來配置任務的weblogic部分:增加一個構建后操作:
需要配置的項主要有:
-
Task Name: 用於部署的名字;Eg. Webapp WL Deployment
-
Environment: 指定你要部署到的環境。(前后default.xml配好,這里選擇即可)確保使用的是AdminServer端口(默認7001)而不是Managed Server端口
-
Name: weblogic的應用名,必須事先存在。
-
Base directory where the resource to deploy can be found:比如E:\jenkins-work\target\(前前面指定的工作空間下的target\下)
-
Built resource to deploy: 分發包的名稱,可以使用正則表達式標識。比如test.war,應該寫成test\.war
-
Targets: The name of the managed server you want to deploy the webapp to默認為AdminServer,多個以逗號(,)分隔。
-
Weblogic libraries: 分發包是否以依賴庫的形式進行部署。一般不需要勾選
-
Fail build if deployment fails:部署失敗是是否顯示構建失敗, 一般需要勾選。
其中default.xml配置, Environment,targets參數對應於weblogic domain安裝配置時的如下:
配置示例:
高級配置:
詳細參考:https://wiki.jenkins-ci.org/display/JENKINS/WebLogic+Deployer+Plugin
https://www.zybuluo.com/kevinZheng/note/359003
比如:weblogic.Deployer部署web應用
先undeploy
"D:\Program Files\Java\jdk1.8.0_101\jre\bin/java" -Xms256M -Xmx1024M -cp E:\jenkins-tomcat7\wlfullclient.jar weblogic.Deployer -debug -remote -verbose -noexit -name fxglxt -targets AdminServer -adminurl t3://localhost:7001 -user weblogic -password 12345678 –undeploy
再deploy
"D:\Program Files\Java\jdk1.8.0_101\jre\bin/java" -Xms256M -Xmx1024M -cp E:\jenkins-tomcat7\wlfullclient.jar weblogic.Deployer -debug -stage -remote -verbose -upload -name fxglxt -source E:\jenkins-work\target\fxglxt.war -targets AdminServer -adminurl t3://localhost:7001 -user weblogic -password 12345678 –deploy
當然你還可以使用-redeploy來結合兩個步驟
"D:\Program Files\Java\jdk1.8.0_101\jre\bin/java" -Xms256M -Xmx1024M -cp E:\jenkins-tomcat7\wlfullclient.jar weblogic.Deployer -debug -stage -remote -verbose -upload -name fxglxt -source E:\jenkins-work\target\fxglxt.war -targets AdminServer -adminurl t3://localhost:7001 -user weblogic -password 12345678 -redeploy
命令說明:
1. -Xms256M -Xmx256M 用來防止內存溢出,
2. wlfullclient.jar 里提供了weblogic.Deployer 命令用來遠程發布項目war包,所以 需要-cp指定jar包路徑 來啟動命令 , 根據不同weblogic版本,該文件不同。
3. -verbose 指定后面的參數,
3. -upload 遠程發布需要上傳文件,
4. -name 發布項目名稱
5. -targets 目標服務,
6. -adminurl 指定連接 weblogic 的協議 ip 和端口
7. -redploy 重新發布的 意思
8. -source 本地需要上傳war包路徑
日志查看
點擊構建按鈕后,不要多次點擊,此時可以查看左下角執行狀態:
查看Weblogic專有日志: