1. 程式人生 > >jenkins從遠端地址拉取專案自動部署到指定遠端伺服器

jenkins從遠端地址拉取專案自動部署到指定遠端伺服器

2017年11月02日 15:05:28 閱讀數:7620更多

轉載自:http://blog.csdn.net/xbynet/article/details/52779314

基本

版本JenKins:2.19.1, Maven:3.1

環境要求:

  • Java 7

  • 256MB free memory

  • 1GB+ free disk space

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/

然後會提示設定管理員使用者和密碼,如下:

進入jenkins

經過以上的步驟jenkins已經安裝完成。

JDK及Maven

在部署你的專案之前你需要jdk,maven的資訊告知Jenkins。

  1. 點選系統管理->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分鐘執行一次。

  1. H(0-29)/10 * * * * every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)

  1. # once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 3:45 PM every weekday.

  1. 45 9-16/2 * * 1-5

  1. # 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)

  1. H H(9-16)/2 * * 1-5

  1. # once a day on the 1st and 15th of every month except December

  1. H H 1,15 1-11 *

自動部署

自動部署到tomcat

自動部署需要一個容器,那Jenkins是怎麼知道你的容器的呢?容器外掛

首頁-》系統管理-》管理外掛

搜尋deploy,很快就會找到這個deploy to container plugin,安裝完記得重啟。

這個由於網路原因下載會失敗,這個時候需要設定映象站點:

系統設定-》外掛-》高階-》Update Site:

接著選你的專案-》配置

構建後操作

  • 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專有日誌:

注意設定遠端伺服器tomcat的密碼  在tomcat-users.xml中設定一下程式碼

<role rolename="manager-script"/>
<user username="admin" password="admin" roles="manager-script"/>

參考:

https://www.zybuluo.com/kevinZheng/note/359003