一、構建一個maven項目
在jenkins主頁上,左側,選擇“新建”,然后填寫項目名稱,選擇“構建一個maven項目”
二、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這兩行)
三、構建項目觸發器
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
點擊立即構建:
第一次由于要拉代碼,所以比較慢,過了一會之后,出現如下變化:
這里藍色的圈表示成功,紅色表示失敗
點擊 # 進去之后
點擊 Console Output 查看本次構建的輸出記錄 ,最底部顯示成功,如果有錯誤的話,這里會顯示失敗信息的。
這時候,去我們的centos服務器的/root/.jenkins/jobs 目錄下查看變化,首先多了一個weds-common文件夾,這個是根據我們的job的名字創建的。
進入目錄中 cd weds-common目錄,查看
這里是項目的構建記錄
進入 cd /root/.jenkins/workspace/ 目錄查看
這里多了我們的項目文件夾,這個是從我們的git服務器上pull下來的代碼
至此,本機的拉取,構建代碼大功告成。
四、構建項目發布到遠程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
?