(一)Jenkins全局配置
訪問部署好的Jenkins服務器網址localhost:8080,完成默認插件的安裝后,接下來將使用SSH登錄遠程主機以實現自動化部署。
1. 配置插件
選擇dashboard->Manage Jenkins->plugins
安裝下面兩個插件
Publish over SSH
Deploy to container Plugin
2. 配置遠程主機
在dashboard->Manage Jenkins->system下配置遠程主機的ip、用戶名、密碼等
3.配置maven、git、jdk的路徑
在dashboard->Manage Jenkins->tools里配置
-
修改maven的配置文件路徑、根目錄
-
配置git路徑
-
配置jdk路徑
(二)新建item
新建item,輸入任意的名稱,進入item配置
1. 選擇github項目,配置項目的倉庫地址、用戶、密碼
密碼不是直接填寫的,在【添加】選項里完成“密碼本”的配置
2.配置maven命令
這里是先clean然后install
3. 配置需自動上傳的jar包和自動部署的腳本
demo1
是遠程主機的名稱
Source files
是需要自動上傳到遠程主機的jar包,路徑容易填錯,可以填**/*.jar
,再根據之后實際傳過來的文件修改這個配置
Remove prefix
是需要抹掉的文件前綴,例如target/
Exec command
放需要執行的腳本命令
啟動腳本start.sh
舉例
#!/bin/bashecho 'Start the program : demo-start-0.0.1-SNAPSHOT.jar'
chmod 777 /var/www/jenkins/demo1/demo-start-0.0.1-SNAPSHOT.jar
echo '-------Starting-------'nohup java -jar /var/www/jenkins/demo1/demo-start-0.0.1-SNAPSHOT.jar > myapp.log 2>&1 &
echo 'start success'
關閉腳本stop.sh
舉例
#!/bin/bash
echo "Stop Procedure"
pid=`ps -ef |grep java|grep demo-start-0.0.1-SNAPSHOT.jar|awk '{print $2}'`
echo 'old Procedure pid:'$pid
if [ -n "$pid" ]
then
kill -9 $pid
fi
(三)測試及一些遇到的坑
- 在主面板開始構建項目,測試效果
- 如果jar包運行時顯示【沒有主機清單】,在pom配置里添上
<skip>false</skip>
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.6.13</version><configuration><mainClass>com.example.demo.DemoApplication</mainClass><skip>false</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
- 使用nohup運行jar包時要把錯誤重定向到指定文件或者合并到標準輸出中
nohup java -jar xxx.jar > myapp.log 2>&1 &
合并標準錯誤和標準輸出
nohup java -jar xxx.jar > myapp.log 2> error.log &
將標準錯誤重定向到error.log文件
nohup java -jar xxx.jar &
這個寫法不會記錄錯誤,只會將錯誤信息顯示在終端