1. Jenkins下載安裝及初始化
- 下載Jenkins軟件:https://jenkins.io/download/,選擇war包即可。
2. 啓動
java –jar Jenkins.war
或放到tomcat中運行
注意:windows下默認的路徑爲C:\Users\${用戶名} \.jenkins, linux下則爲root/.jenkins
3. 初次啓動時,Jenkins會讓你輸入一個密碼,這個密碼是Jenkins自動爲你生成的,密碼所在的文件頁面上會有具體文件的目錄說明。找到文件輸入密碼即可。
4. 接下來就到了插件安裝的界面,新手的話,直接點推薦安裝就行。
注意:這個時候可能還會出現無法聯網的問題,新開一個標籤頁,輸入網址http://localhost:8080/pluginManager/advanced。 把最下面的升級站點改成http的即可,http://updates.jenkins.io/update-center.json。 然後在服務列表中關閉jenkins,再啓動,這樣就能正常聯網了。
5. 接下來就是設置個用戶正常下一步就行了
2. Jenkins環境配置
1. JDK配置
2. Git配置
3. Maven配置
3. Jenkins+git+maven實現自動化部署
4. 創建任務
1. 回到Jenkins的首頁,點擊創建一個新任務
2. 創建新任務的頁面如下圖所示,由於我們的項目是maven項目,最終的頁面中應該會有一個【構建一個Maven項目】的選項,而當前頁面沒有這個的選項,是因爲我們還沒有安裝maven的部署打包的插件,那就需要先安裝好maven的插件
3. 進入插件管理的頁面,首先將選項卡切換到【可選插件】,之後在右上角文本框中輸入Maven Integration plugin (這個名稱在不同版本的Jenkins中可能會不一樣,那就輸入一個maven進行搜索,然後找到對應的插件即可),篩選出這個插件,然後選擇此插件,點擊下方的【直接安裝】
4. 插件安裝成功後,點擊【返回首頁】,至此,Jenkins所需的Maven打包構建的插件已經安裝完畢。
5. 回到任務頁面,此時開始新建任務
5. Git配置
1. 由於項目是git項目,故需要在【源碼管理】區域選擇“Git”,下面的Branch Specitials 的地方,默認是master分支,如果你的項目默認不是master分支,就需要改成對應的分支名稱。
2. 勾選構建環境標籤頁的Add timestamps to the Console Output,如下圖
3. 然後在Build中做如下設置
4. 此時你可以測試一下是否能從git下拉取項目代碼,並自動打包。回到自己創建的任務,點擊立即構建,可以看到下方會出現一個新的進度條。
5. 點擊進度名後面的倒三角形,然後點擊控制檯輸出,即可看到項目構建的日誌信息
如果報錯了,請自行查找原因並且去解決。
6. 利用Publish Over SSH 實現遠程部署
1. 首先安裝SSH以及 publish Over SSH插件
2. SSH配置,【首頁】--【系統管理】—【系統設置】找到Pubilsh Over SSH
3. 點擊高級選項,填寫如下數據
4. 點擊test按鈕,顯示success則爲成功
5. 自動化部署配置
因爲Publish Over SSH 的執行順序是先上傳文件再執行腳本,所以這邊就執行兩步腳本,關閉服務,備份,刪除舊版,然後啓動新文件
6. 點擊Add Transfer Set,新增一組設置:
注意:包位置是相對路徑,相對的是jenkins工作路徑\任務名,例如:
而全路徑則爲:
所以填寫cheng-admin\target\admin.jar即可,至此,已經全部完成,請自行測試。
附:執行的shell腳本
#!/bin/sh
## java env
export JAVA_HOME=/usr/local/jdk1.8.0_101
export JRE_HOME=$JAVA_HOME/jre
## exec shell name
EXEC_SHELL_NAME=$1\.sh
## service name
SERVICE_NAME=$1
SERVICE_DIR=/opt
JAR_NAME=$SERVICE_NAME\.jar
PID=pid/$SERVICE_NAME\.pid
WORK_DIR=$SERVICE_DIR/springboot
#function start
start(){
cd $WORK_DIR
if test ! -d "log" ; then
mkdir log
fi
nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME > log/$SERVICE_NAME.out 2>&1 &
echo $! > $SERVICE_DIR/$PID
echo "#### start $SERVICE_NAME"
}
# function stop
stop(){
cd $WORK_DIR
if test -f "$SERVICE_DIR/$PID" ; then
kill `cat $SERVICE_DIR/$PID`
rm -rf $SERVICE_DIR/$PID
fi
echo "#### stop $SERVICE_NAME"
sleep 6
TEMP_PID=`ps -ef | grep -w "$SERVICE_NAME" | grep "java" | awk '{print $2}'`
if test "$TEMP_PID" == "" ; then
echo "#### $SERVICE_NAME process not exists or stop success"
else
echo "#### $SERVICE_NAME process pid is:$TEMP_PID ."
kill -9 $TEMP_PID
fi
}
# function clean
clean(){
cd $WORK_DIR
if test ! -d "lastDeploy" ; then
mkdir lastDeploy
else
rm lastDeploy/$SERVICE_NAME*
fi
if test -f "$JAR_NAME" ; then
mv $JAR_NAME lastDeploy
fi
}
case "$2" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 2
start
echo "#### restart $SERVICE_NAME"
;;
clean)
stop
sleep 2
clean
echo "#### clean $SERVICE_NAME"
;;
*)
## restart
stop
sleep 2
start
;;
esac
exit 0