一、分析准備
接上文,我們的前端代碼是通過git管理的,需求是通過Jenkins拉取前端VUE代碼並且編譯生成待部署的部署包。經過分析,我們需要做如下的准備:
1、Jenkins的機器能拉取git代碼並編譯;——已完成
2、Jenkins的機器能通過SSH連接項目所在的windows server服務器;——已完成
3、新建Jenkins任務將編譯、部署串起來;——本期目標
PS:項目的情況如下
Jenkins機器 | 1台,部署在windows機器 |
項目語言 | VUE純前端 |
項目部署服務器 | 1台,windows server服務器 |
二、Jenkins項目配置
新建自由風格的項目
由於項目使用git管理代碼,這里進行git相關配置。注意使用最開始配置的全局憑證,即Jenkins機器生成的私鑰。
構建觸發器請參考注釋按需配置,由於目前我們項目只需要手動觸發構建,這里就不選了。
由於項目是VUE項目,這里要配置使用nodejs(前文在Global Tool Configuration中配置)環境進行編譯。(參考https://www.cnblogs.com/chooperman/p/14061469.html)
由於我部署Jenkins服務的機器也是windows的,這里選擇使用windows命令進行拉取代碼后的編譯(下圖1)及后續處理(下圖2)。
使用如下命令后,最終會在 %WORKSPACE%目錄下,生成dist.tar的壓縮包,后續將其直接放入項目服務器解壓即可。
附上相關代碼
call echo 構建_01注冊淘寶鏡像 call npm config set registry https://registry.npm.taobao.org call echo 構建_02檢查注冊結果 call npm config get registry call echo 構建_03依賴安裝 call npm install call echo 構建_04編譯打包 call npm run build
call echo 構建后處理_01進入dist目錄 call cd dist call echo 構建后處理_02壓縮編譯包 call tar cvf dist.tar * call echo 構建后處理_03壓縮包放入工作目錄 call xcopy /s/y dist.tar %WORKSPACE%
得到上述產物包后,使用Send files or execute commands over SSH命令,選擇配置好的遠程服務器,按下圖將包發送到項目服務器上。
接下來,使用Execute shell script on remote host using ssh命令,選擇項目所在服務器,進入指定的目錄,執行該目錄下已經提前配置好的bat腳本,進行產物包挪位置,解壓、刪除等操作。
注意:由於前文提到使用powerShellServer工具連接到遠程服務器后,其命令行所在的默認的路徑(下圖1),並不是將代碼包復制過去的路徑(下圖2、圖3),而我們把bat腳本也放在了代碼包復制過去默認存儲的路徑,因此要注意切換到對應目錄執行bat腳本。
然后說明下bat腳本的主要作用,主要是將產物包從臨時目錄復制到項目部署所需目錄,然后進入該目錄對其進行解壓,解壓后刪除廢棄的產物包。這里暫時沒有對原代碼包進行備份等操作,各位按需進行。
上述所有內容配置完后,保存即可。
接下來進行調試看看,由於前面准備工作比較到位,查看控制台輸出發現一次成功了。
最后,建議直接訪問項目的web地址,通過實際的功能界面確認下代碼是否已部署最新的了。
好了,經過這些天的調試,終於能使用Jenkins部署代碼到windows server服務器了。總結下來,耽誤比較多精力的是
1、項目服務器是阿里雲,一開始不清楚沒有及時找管理員開放ssh端口導致調試耽誤很長時間;
2、在ssh工具的選擇上,花費了很多時間,最終僅使用powershellServer成功了;
3、Jenkins部署所在機器各類環境的安裝,nodejs、git等等;
還是linux好用點,哈哈哈~