1、構建一個maven項目
在jenkins主頁上,左側,選擇「新建」,而後填寫項目名稱,選擇「構建一個maven項目」
2、Git配置
保存以後,進入詳細配置頁面:
這裏的源碼管理:選擇git,輸入代碼的git地址,Credentials,填寫代碼分支(默認是*/master主分支)
Credentials,須要點擊Add按鈕,添加具體的git憑證,
①若是當前git項目配置爲經過用戶名+密碼認證,則kind選擇username with password;
centos的root用戶生成的公鑰密鑰信息位置信息以下:
②若是用的是公鑰+私鑰的方式,則kind須要選擇:ssh username with private key
在private key裏面填寫私鑰,私鑰 位置(在開通git代碼權限時生成):
windows下:C:\Users\Administrator\.ssh\id_rsa
centos 下 /root/.ssh/id_rsa
文件內容:
此時須要把這個id_rsa文件中的全部內容都粘貼到文本框中(包括BEGIN RSA PRIVATE KEY和END RSA PRIVATE KEY這兩行)
3、構建項目觸發器
build periodically:週期性構建,好比每隔十分鐘構建一次,是經過cron表達式控制的,具體能夠點擊右側的幫助
poll scm:每隔多長時間pull一次代碼,若是有更新,則編譯,也是經過cron表達式控制的
點擊後面的?標識能夠查看說明:
配置maven編譯的pom文件和部署腳本:
root pom文件:因爲如今當前文章中tool代碼中的主pom.xml就在根目錄下,因此root pom直接填寫:pom.xml
若是不是在根目錄下,例如:toolsamdin項目中的pom.xml文件,則root pom直接填寫:toolsamdin\pom.xml
goals and options:這裏調用maven的命令:clean install(若是項目中配置了多套配置文件profile,這裏須要應用id=test的profile這套配置,則此處填寫:clean install -P test)
這裏咱們簡單的測試一下,寫一個 clean install
點擊當即構建:
第一次因爲要拉代碼,因此比較慢,過了一會以後,出現以下變化:
這裏藍色的圈表示成功,紅色表示失敗
點擊 # 進去以後
這時候,去咱們的centos服務器的/root/.jenkins/jobs 目錄下查看變化,首先多了一個weds-common文件夾,這個是根據咱們的job的名字建立的。
進入目錄中 cd weds-common目錄,查看
這裏是項目的構建記錄
進入 cd /root/.jenkins/workspace/ 目錄查看
這裏多了咱們的項目文件夾,這個是從咱們的git服務器上pull下來的代碼
至此,本機的拉取,構建代碼大功告成。
4、構建項目發佈到遠程linux centos 服務器
點擊Post Steps,如圖是一個正確的配置,報錯能夠無論。
其中SSH Server是咱們以前在系統設置 Publish over SSH 中設置好的
post steps須要發佈到遠程linux,因此選擇:
而後填寫目標war或jar到遠程linux機器上的哪一個目錄下,而後調用遠程機器上的shell腳本,自動重啓tomcat,自動備份等功能
其 中Source files的目錄是基於當前job的目錄(能夠從jenkins的安裝目錄下找到):例如當前job名稱爲weds-common,則對於root用戶,Source files中的目錄是相對於/root/.jenkins/workspace/weds-common目錄下的,所以,若是咱們要發送weds-common下的weds-pay項目的war包,這裏須要填寫:weds-pay/target/weds-pay.war
Remove prefix:表示須要移除的目錄,好比這裏填寫weds-pay/target,則表示發佈時,只把weds-pay.war發佈到遠程linux,而不包含weds-pay/target目錄結構
Remote directory:表示須要把編譯好的war包發佈到遠程linux的哪一個目錄下
Exec command:須要執行的shell命令,shell命令在遠程linux服務器上,好比。通常是須要執行:中止tomcat,複製war到tomcat,備份,啓動tomcat等。
注:本人在配置的是soure files 路徑填寫有問題,致使構建的時候,
Console Output一直報SSH: Transferred 0 file(s),關於相對路徑的問題,若是搞不清楚是該相對於誰,請看下圖:
四種第一個截圖裏的 test.sh的內容:該shell命令的做用是備份上傳文件,刪除tomcat中原來的項目文件(因爲tomcat自動解壓縮,因此這裏刪除原來的文件,等一小會後會自動上傳文件而且解壓縮)
#!/bin/bash #傳參測試腳本 export LANG="en_US.UTF-8" PROJECT=$1 BAK_DIR=/usr/local/autodeploy/bak/$PROJECT TEMP_DIR=/usr/local/autodeploy/temp/$PROJECT TOMCAT_HOME=/usr/local/tomcat if [ -f $TEMP_DIR/$PROJECT.war ]; then #sleep 3 if [ -f $TOMCAT_HOME/webapps/$PROJECT.war ]; then echo "===================deleteing old war===================" rm -rf $TOMCAT_HOME/webapps/$PROJECT.war rm -rf $TOMCAT_HOME/webapps/$PROJECT else echo "===================old war not exits===================" fi echo "===================copying new war===================" cp $TEMP_DIR/$PROJECT.war $TOMCAT_HOME/webapps/$PROJECT.war echo "===================baking war===================" mkdir -p $BAK_DIR cp $TOMCAT_HOME/webapps/$PROJECT.war $BAK_DIR/"$PROJECT"_`date +%Y%m%d%H%M%S`.war echo "===================deleteing temp file===================" rm -rf $TEMP_DIR/$PROJECT.war echo "===================finished==========================" else echo "===================temp file not exits===================" fi