環境准備:
- win10
- docker
- gitee
- 一台服務器
安裝jenkins配置環境
首先你自己的需要在電腦上搭建docker的環境,這邊就不介紹docker了。
接下來就是搜索鏡像,安裝jenkins,直接看圖吧

安裝好后啟動的時候需要指定下掛載目錄,方便后續的修改和查看
docker run -u root -d -p 8080:8080 -p 50000:50000 -v F:\tmp\jenkins_data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins-test jenkinsci/blueocean
等待一會,打開瀏覽器 localhost:8080就可以看到以下畫面

然后去我們剛剛掛載的目錄下找到secrets下的初始密碼:

登錄進去初始化一會,根據你的網絡狀況看是否能加載出來這個頁面

安裝推薦的插件就行,要是沒加載出來,就跳過等下去,手動安裝插件,默認安裝的插件如圖所示:

安裝完成就會讓你創建一個賬戶,創建完成會點擊重啟,等待幾分鍾就好,登錄進去就行。


配置:
進來就先進去,系統管理->插件管理->高級
將http://updates.jenkins.io/update-center.json 改為http的,記得點擊下面的立即獲取,等待驗證一下

gitee插件
然后就是安裝所需要的插件,這邊我用的是gitee,所以需要下載gitee的,等待安裝重啟

ssh插件
安裝ssh插件,需要上傳到服務器運行項目

maven任務插件
安裝maven任務插件

maven外部配置插件
安裝maven外部配置插件

jenkins配置
maven的配置
剛剛maven的插件下好后,在系統管理中就多了managed files


點進去后,左側選擇add 選擇maven settings.xml 更改自己想要的配置就行。
全局配置
maven就選擇剛剛新建的xml文件,這里的jdk,是選擇的jenkins默認安裝的,使用docker exec 進入jenkins的容器,使用which java
查看


后續的git和maven我都是用的自動安裝,安裝完成重啟jenkins

但是git的自動安裝完成也要配置一次,進入jenkins容器 which git


在全局設置中,需要添加一個gitee的令牌

ssh上傳到服務器配置 ,在全局配置里面的選項

新增maven任務

選擇剛剛配置的gitee地址,配置項目地址和登錄gitee的賬號密碼

選擇構建觸發器
注意下面的gitee webhook填寫的是localhost 但是我這邊用了花生殼做了映射,所以我在gitee中的配置是外網的
花生殼的映射

構建觸發器的配置

倉庫的webhook配置

執行構建

構建后上傳到服務器 執行停止和啟動腳本



腳本注意
start.sh 一定要加這個 不然你的腳本可能不會被執行,后台也會被殺掉
source /etc/profile
BUILD_ID=dontKillMe
source /etc/profile
#!/bin/bash
export JAVA_HOME=/home/tools/jdk1.8.0_251
echo ${JAVA_HOME}
echo 'Start the program : mall-0.0.1-SNAPSHOT.war'
chmod 777 /root/tmp/mall-0.0.1-SNAPSHOT.war
echo '-------Starting-------'
cd /root/tmp/
source /etc/profile
BUILD_ID=dontKillMe
nohup /home/tools/jdk1.8.0_251/bin/java -Dhudson.util.ProcessTree.disable=true -jar mall-0.0.1-SNAPSHOT.war > /dev/null 2>&1 >> test.log &
sleep 2
pid=`ps -ef |grep java|grep mall-0.0.1-SNAPSHOT.war|awk '{print $2}'`
echo 'pid: ' $pid
echo 'start success'
stop.sh
source /etc/profile
#!/bin/bash
echo "Stop Procedure : mall-0.0.1-SNAPSHOT.war"
pid=`ps -ef |grep java|grep mall-0.0.1-SNAPSHOT.war|awk '{print $2}'`
echo 'old Procedure pid:'$pid
if [ -n "$pid" ]
then
kill -9 $pid
fi
