@
Jenkins筆記
Jenkins筆記之新建任務:https://blog.csdn.net/weixin_42526326/article/details/119865834
Jenkins筆記之配置遠端伺服器:https://blog.csdn.net/weixin_42526326/article/details/119866221
Jenkins:引數化構建:多分支|多模組|回滾|列印日誌:https://blog.csdn.net/weixin_42526326/article/details/121580465
根據自己的需求自定義構建不同的引數
多分支
安裝Git Parameter Plug-In
同型別的外掛不止一種,選擇自己熟悉的即可
進入系統管理——外掛管理——可選外掛——直接搜——安裝
配置引數
配置——Gods Webhook——引數化構建過程——新增引數——Git 引數——配置下面的引數:
名稱:引數變數名
引數型別:選擇分支/分支或者標籤
預設值:設定為主分支或者其他的分支
原始碼管理——設定分支引數$mybranch 上一步驟中的引數名——其他在正確的情況下——儲存
自動根據git地址解析版本
選擇構建分支
分模組
前提
父專案和子專案必須新增build標籤,這個分不分模組都是需要的
- 父專案
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
- 子專案
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
分模組build
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-EW3doc2V-1638005232824)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211122175236237.png)]
引數配置
Extended Choice Parameter —— Parameter Type—— 選擇Check Boxes(多選框)
Number of Visible Items : 模組限制
Delimiter:分隔符
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-ji4bHXJI-1638005232825)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211127164143904.png)]
分模組shell指令碼
maven根據pom分模組
shell執行流程:
- 獲取分支引數、模組引數、工作空間路徑(使用預設值)
- 遍歷路徑跳轉模組目錄——讀取當前目錄pom.xml ——讀取setting.xml
- clean——install(complie)
#!/usr/bin/env bash
echo "branch to deploy: " $mybranch
echo "modules to deploy: " $submodule
echo "workspace is: " $WORKSPACE
# /, 轉義符,獲取,模組陣列
array=(${submodule//,/ })
#遍歷執行
for module in ${array[@]}
do
echo "Try to compile other module"
cd $WORKSPACE/${module} && mvn -B -f pom.xml -s /data/apache-maven-3.8.1/conf/settings.xml -gs /data/apache-maven-3.8.1/conf/settings.xml clean install -Dmaven.test.skip=true
done
mvn 的基本用法
用法:mvn [options] [<goal(s)>] [<phase(s)>]
選項:
-B,-批處理模式以非互動方式執行(批處理)模式(禁用輸出顏色)
-D,-定義<arg>定義系統屬性
-f,-file <arg>強制使用備用POM檔案(或帶有pom.xml的目錄),pom檔案路徑必須緊跟在 -f 引數後面
-e,-errors產生執行錯誤訊息
-X,-debug產生執行除錯輸出
-l,-log-file <arg>所有構建輸出的日誌檔案會去(禁用輸出顏色)
-q,-quiet安靜的輸出-僅顯示錯誤
-v,-version顯示版本資訊
-h,-help顯示幫助資訊
-s --settings <arg> 使用者配置檔案的備用路徑;
-gs --global-settings <file> 全域性配置檔案的備用路徑;
分模組執行
執行SCP命令,SSH連線遠端伺服器,執行重啟指令碼,採用兩種方式,
-
一if ,else列出所有的服務
!/usr/bin/env bash
echo "modules to deploy: " $submodule
array=(${submodule//,/ })
for module in ${array[@]}
do
echo "Try to restart other module start"
scp -P 2021 /data/jenkins/workdir/jobs/base-service/workspace/module/$module-service/target/$module-service.jar devops@xxx.9.134.177:/home/devops/$module/ssh -p 2021 devops@xxx.9.134.177 "/data/initsh/$module-restart.sh" echo "Try to restart other module end"
done
-
for 遍歷所有的模組,伺服器所有的專案都要規整。通常採用這種方式,自定義引數:同一個伺服器多個服務遍歷,每個結點一個任務,每個結點多個服務,可以做一個分組的設定
#!/usr/bin/env bash
echo "modules to deploy: " $submodule
array=(${submodule//,/ })
for module in ${array[@]}
do
if [ "$module" == "module" ]; then
echo "Try to restart other module start"
scp -P 2021 /data/jenkins/workdir/jobs/base-service/workspace/module/module-service/target/module-service.jar devops@xxx.9.134.177:/home/devops/module/
ssh -p 2021 devops@xxx.9.134.177 "/data/initsh/module-restart.sh"
echo "Try to restart other module end"
fi
done
專案回滾
原理:構建時可以選擇是構建或者回滾欄位,設定Choice欄位的值,通過Choice設定專案build版本
引數配置
Gods Webhook——新增引數——Extended Choice Parameter
-
Extended Choice Parameter: 選擇引數
-
Number of Visible Items:專案可見數
-
Delimiter:分隔符
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-Gpxk94Ao-1638005232826)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211122170156675.png)]
配置選擇框內欄位
構建後存檔
記錄檔案的指紋用於追蹤
需要記錄指紋的檔案:Jenkins 工作目錄儲存的jar
專案構建選擇
列印日誌
需要單獨開一個任務,與build、run都要區分開,非常的不方便,
原理:伺服器遠端命令列印日誌到Jenkis,
列印日誌的命令:
tail -$LogRow logPath/log$Date.log
-N
-Date
這個是日誌的字尾,根據伺服器日誌名列印指定的日誌檔案,最多檢視15天以內的日誌
檢視某一天的日誌,如果輸入.2021-11-22,就是檢視2021-11-22的日誌,注意前面是有一個.符號不能省略,最多檢視15天以內的日誌
SSH命令
tail -$LogRow /data/project/yilucloud-analysis/logs/error$Date.log
取消build,run
參考文章: