文章目錄
- 1.安裝NodeJS插件
- 2.配置全局工具配置-NodeJS環境變量
- 3.新建自由風格的軟件項目任務
- 4.配置General
- 配置丟棄舊的構建
- 配置參數化構建過程
- 5.配置源碼管理
- 6.構建觸發器
- 7.設置構建環境
- 8.配置構建步驟
- 9.配置構建后操作
- 10測試構建
前文鏈接: Ubuntu上Jenkins自動化部署Gitee上SpringBoot項目
相關Jenkins和服務器環境都已配置完成。
1.安裝NodeJS插件
Dashboard -> 系統管理 -> 插件管理 -> 可選插件,搜索nodejs,安裝即可。
安裝完成后重啟Jenkins(空閑時)
2.配置全局工具配置-NodeJS環境變量
Dashboard -> 系統管理 -> 全局工具配置(Global tool configuration),添加NodeJS。
如果服務器已經安裝了NodeJS,可以配置路徑,否則可以選自動安裝。
也可以添加多個node版本,后面選擇其中一個使用。
保存就OK!這樣我們在新建任務,配置項目構建環境時就可以選擇這里配置的nodejs。
# 注意 服務器和Jenkins上是隔離的
# 這里服務器上沒安node,我們選擇自動安裝。
# 服務器上執行時報錯的
# node -v
bash: node: command not found
#這里執行是對的
# /root/.jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS21/bin/node -v
v21.6.2
3.新建自由風格的軟件項目任務
Dashboard -> 新建任務
- 輸入任務名稱
- 選擇構建一個自由風格的軟件項目
- 點擊確認按鈕
4.配置General
描述:就是注釋,給我們這個job一個更便于其他查看的詳解
Throttle builds:節流構建,通過設置時間段內允許并發的次數來實現構建的控制
- Number of builds:構建的次數
- Time period:設置指定的時間段,單位可以是年、月、日、周、時、分、秒
在必要時進行并發構建:滿足策略要求時就會進行并發構建
安靜期:設置一個時間來間隔每次構建的間隔
重試次數:這個和系統設置的一樣,拉取源碼重試的次數
該項目的上游項目正在構建時阻止該項目構建與該項目的下游項目正在構建時阻止該項目構建:用于上下游項目有關聯的構建策略
使用自定義的工作空間:使該項目獨立于系統的工作空間
配置丟棄舊的構建
設置構建歷史的保存策略
- log Rotation:日志循環,只有一個默認值選項 Log Rotation,無須修改;
- 保持構建的天數:根據你所填寫的天數來保存構建記錄;
- 保持構建的最大個數:有幾條構建記錄保存;
- 發布包保留天數
- 發布包最大保留個構建
配置參數化構建過程
參數化構建,可以單擊添加參數,在每次構建之前需要用戶給參數賦值,根據不用的參數值執行不同的處理流程。
以一個示例場景為例,考慮到每次構建可能不需要運行npm install
,我們可以通過參數化配置來判斷是否在構建時執行這個依賴安裝命令。
添加一個布爾值參數INSTALL_DEPENDENCIES
.
5.配置源碼管理
- 倉庫 URL:https://gitee.com/lakernote/easy-admin.git。
- 憑證:用于訪問Git倉庫的用戶名密碼、ssh 密鑰、token 等憑證。
- Branches to build:指定分支。
6.構建觸發器
構建觸發器用來設置觸發項目構建的時間或者事件。
這里也可以什么都不選,然后手動在Jenkins點擊按鈕觸發。
觸發遠程構建
勾選此復選框之后,Jenkins 會提供一個特定的 URL 用來觸發項目的自動構建。為了安全起見,可以看到在 URL 之后還會要求有一個用于授權的 Token 字段。這樣就可以使用 wget 或 curl 這樣的工具觸發構建。
其它項目構建完成后構建
用來設置在某個項目構建完成后才能觸發本項目的構建。而且可以對其它項目的具體構建結果進行設定,比如,穩定的(成功),不穩定的,失敗的。比如我們需要在 war 包發布成功后,再進行測試腳本的執行,這種場景下就可以配置此項。
定時構建
這是一種類似于 crontab 命令的功能,可以指定在某個或某些具體時間自動進行項目的執行。包含 5 個字段,這些字段以空格或者 Tab 鍵分割,用來指定多久去執行一次構建。格式為:
- MINUTES:一小時內的分鐘,取值范圍(0-59)
- HOURS:一天內的小時,取值范圍(0-23)
- DAYMONTH :一個月中的某一天,取值范圍(1-31)
- MONTH :月份,取值范圍(1-12)
- DAYWEEK:一周中的星期幾,取值范圍(0-7)。0 和 7 都表示星期日
# every fifteen minutes (perhaps at :07, :22, :37, :52).
H/15 * * * *# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24).
H(0-29)/10 * * * *# once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 3:45 PM every weekday.
45 9-16/2 * * 1-5# once in every two hours slot between 9 AM and 5 PM every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM).
H H(9-16)/2 * * 1-5# once a day on the 1st and 15th of every month except December.
H H 1,15 1-11 *
輪詢 SCM
就是定期到指定的代碼倉庫查詢是否有變化,如果有變化就執行。語法同 cron 是一樣的。
與周期性構建的區別就是,讓 Jenkins 在指定的時間去檢查代碼倉庫是否有變化,有變化了才運行項目,而不是直接到點了就運行項目。
注意:最下面一行有一個復選框,忽略 post-commit 鉤子,就是告訴 Jenkins 要忽略來自鉤子的信號,目的就是為了防止重復觸發操作。
7.設置構建環境
- Delete workspace before build starts 會在構建之前清空工作空間。
- Use secret text(s) or file(s) 使用加密文件或者文本。
8.配置構建步驟
選擇執行shell
注意腳本中的一些相對目錄問題。
# 在腳本中的執行結果如下
# 命令:echo $PATH
11:29:22 echo $PATH
11:29:22 /usr/lib/jvm/java-11-openjdk-amd64/bin:/root/.jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS21/bin:/usr/lib/jvm/java-11-openjdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
# 命令: pwd
11:29:23 + pwd
11:29:23 /root/.jenkins/workspace/laker-vue
Shell內容
# 進入Jenkins工作空間下vue項目目錄
cd ./laker-admin# 根據 INSTALL_DEPENDENCIES 參數的值判斷是否需要安裝依賴包
if [ "$INSTALL_DEPENDENCIES" = true ]; thenecho "下載依賴包"npm config set registry https://registry.npmmirror.com # 設置npm鏡像源npm config list # 打印npm配置列表npm install # 安裝依賴包
fiecho "刪除dist目錄"
rm -rf ./dist/* # 刪除dist目錄下的所有文件npm run build:prod # 執行生產環境構建命令echo "清空目標目錄"
rm -rf /laker/admin-client/* # 刪除目標目錄下的所有文件# 確保目標目錄存在
mkdir -p /laker/admin-client/dist# 將構建生成的文件復制到目標目錄
cp -rf ./dist/* /laker/admin-client/dist
9.配置構建后操作
一些常見的構建后操作包括:
- 郵件通知: 發送構建結果通知給指定的郵件地址。
- 部署到服務器: 將構建產物部署到指定的服務器。
- 觸發其他任務: 在當前任務構建完成后觸發其他Jenkins任務。
- 生成報告: 生成測試報告、代碼覆蓋率報告等。
點擊保存按鈕。
10測試構建
1.點擊使用參數構建
2.在Console Output 菜單可以查看構建日志。
12:36:59 Images and other types of assets omitted.
12:36:59
12:36:59 DONE Build complete. The dist directory is ready to be deployed.
12:36:59 INFO Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html
12:36:59
12:37:00 + echo 清空目標目錄
12:37:00 清空目標目錄
12:37:00 + rm -rf /laker/admin-client/*
12:37:00 + mkdir -p /laker/admin-client/dist
12:37:00 + cp -rf ./dist/favicon.ico ./dist/index.html ./dist/static ./dist/tinymce4.7.5 /laker/admin-client/dist
12:37:00 Finished: SUCCESS