一、構(gòu)建一個(gè)maven項(xiàng)目
在jenkins主頁(yè)上,左側(cè),選擇“新建”,然后填寫(xiě)項(xiàng)目名稱,選擇“構(gòu)建一個(gè)maven項(xiàng)目”
二、Git配置
保存之后,進(jìn)入詳細(xì)配置頁(yè)面:
這里的源碼管理:選擇git,輸入代碼的git地址,Credentials,填寫(xiě)代碼分支(默認(rèn)是*/master主分支)
Credentials,需要點(diǎn)擊Add按鈕,添加具體的git憑證,
①如果當(dāng)前git項(xiàng)目配置為通過(guò)用戶名+密碼認(rèn)證,則kind選擇username with password;
centos的root用戶生成的公鑰密鑰信息位置信息如下:
②如果用的是公鑰+私鑰的方式,則kind需要選擇:ssh username with private key
在private key里面填寫(xiě)私鑰,私鑰 位置(在開(kāi)通git代碼權(quán)限時(shí)生成):
windows下:C:\Users\Administrator.ssh\id_rsa
centos 下 /root/.ssh/id_rsa
文件內(nèi)容:
此時(shí)需要把這個(gè)id_rsa文件中的所有內(nèi)容都粘貼到文本框中(包括BEGIN RSA PRIVATE KEY和END RSA PRIVATE KEY這兩行)
三、構(gòu)建項(xiàng)目觸發(fā)器
build periodically:周期性構(gòu)建,比如每隔十分鐘構(gòu)建一次,是通過(guò)cron表達(dá)式控制的,具體可以點(diǎn)擊右側(cè)的幫助
poll scm:每隔多長(zhǎng)時(shí)間pull一次代碼,如果有更新,則編譯,也是通過(guò)cron表達(dá)式控制的
點(diǎn)擊后面的?標(biāo)識(shí)可以查看說(shuō)明:
配置maven編譯的pom文件和部署腳本:
root pom文件:由于現(xiàn)在當(dāng)前文章中tool代碼中的主pom.xml就在根目錄下,所以root pom直接填寫(xiě):pom.xml
如果不是在根目錄下,例如:toolsamdin項(xiàng)目中的pom.xml文件,則root pom直接填寫(xiě):toolsamdin\pom.xml
goals and options:這里調(diào)用maven的命令:clean install(如果項(xiàng)目中配置了多套配置文件profile,這里需要應(yīng)用id=test的profile這套配置,則此處填寫(xiě):clean install -P test)
這里我們簡(jiǎn)單的測(cè)試一下,寫(xiě)一個(gè) clean install
點(diǎn)擊立即構(gòu)建:
第一次由于要拉代碼,所以比較慢,過(guò)了一會(huì)之后,出現(xiàn)如下變化:
這里藍(lán)色的圈表示成功,紅色表示失敗
點(diǎn)擊 # 進(jìn)去之后
點(diǎn)擊 Console Output 查看本次構(gòu)建的輸出記錄 ,最底部顯示成功,如果有錯(cuò)誤的話,這里會(huì)顯示失敗信息的。
這時(shí)候,去我們的centos服務(wù)器的/root/.jenkins/jobs 目錄下查看變化,首先多了一個(gè)weds-common文件夾,這個(gè)是根據(jù)我們的job的名字創(chuàng)建的。
進(jìn)入目錄中 cd weds-common目錄,查看
這里是項(xiàng)目的構(gòu)建記錄
進(jìn)入 cd /root/.jenkins/workspace/ 目錄查看
這里多了我們的項(xiàng)目文件夾,這個(gè)是從我們的git服務(wù)器上pull下來(lái)的代碼
至此,本機(jī)的拉取,構(gòu)建代碼大功告成。
四、構(gòu)建項(xiàng)目發(fā)布到遠(yuǎn)程linux centos 服務(wù)器
點(diǎn)擊Post Steps,如圖是一個(gè)正確的配置,報(bào)錯(cuò)可以不管。
其中SSH Server是我們之前在系統(tǒng)設(shè)置 Publish over SSH 中設(shè)置好的
post steps需要發(fā)布到遠(yuǎn)程linux,所以選擇:
然后填寫(xiě)目標(biāo)war或jar到遠(yuǎn)程linux機(jī)器上的哪個(gè)目錄下,然后調(diào)用遠(yuǎn)程機(jī)器上的shell腳本,自動(dòng)重啟tomcat,自動(dòng)備份等功能
其 中Source files的目錄是基于當(dāng)前job的目錄(可以從jenkins的安裝目錄下找到):例如當(dāng)前job名稱為weds-common,則對(duì)于root用戶,Source files中的目錄是相對(duì)于/root/.jenkins/workspace/weds-common目錄下的,因此,如果我們要發(fā)送weds-common下的weds-pay項(xiàng)目的war包,這里需要填寫(xiě):weds-pay/target/weds-pay.war
Remove prefix:表示需要移除的目錄,比如這里填寫(xiě)weds-pay/target,則表示發(fā)布時(shí),只把weds-pay.war發(fā)布到遠(yuǎn)程linux,而不包含weds-pay/target目錄結(jié)構(gòu)
Remote directory:表示需要把編譯好的war包發(fā)布到遠(yuǎn)程linux的哪個(gè)目錄下
Exec command:需要執(zhí)行的shell命令,shell命令在遠(yuǎn)程linux服務(wù)器上,比如。一般是需要執(zhí)行:停止tomcat,復(fù)制war到tomcat,備份,啟動(dòng)tomcat等。
注:本人在配置的是soure files 路徑填寫(xiě)有問(wèn)題,導(dǎo)致構(gòu)建的時(shí)候, Console Output一直報(bào)SSH: Transferred 0 file(s),關(guān)于相對(duì)路徑的問(wèn)題,如果搞不清楚是該相對(duì)于誰(shuí),請(qǐng)看下圖:
四種第一個(gè)截圖里的 test.sh的內(nèi)容:該shell命令的作用是備份上傳文件,刪除tomcat中原來(lái)的項(xiàng)目文件(由于tomcat自動(dòng)解壓縮,所以這里刪除原來(lái)的文件,等一小會(huì)后會(huì)自動(dòng)上傳文件并且解壓縮)
#!/bin/bash
#傳參測(cè)試腳本
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