一、分析准備
接上文,我們的項目是部署在windows server機器上的,沒有Linux方便,需要先配置好SSH連接工具,以便后續Jenkins能連接到此服務器實現傳包+執行腳本等任務。
經過分析,我們要做如下的准備:
1、在項目所在的windows server機器上安裝SSH工具
2、通過工具、命令行等,手動確保Jenkins機器能通過SSH連接上項目機器
3、在確認上述連接正常的情況下,進行Jenkins中的相關配置,使得后續可通過Jenkins項目任務部署代碼到服務器
PS:項目的情況如下
Jenkins機器 | 1台,部署在windows機器 |
項目語言 | VUE純前端 |
項目部署服務器 | 1台,windows server服務器 |
二、windows server服務器SSH工具安裝
由於windows機器沒有自帶ssh工具,需要手動進行安裝,經過了筆者在網上的各類查詢及親測親用,最終僅使用PowerShellServer工具時成功了。下面僅介紹這款工具。
1)、PowerShellServer安裝
請自行百度下載安裝包。
然后安裝,一路下一步即可,姓名郵箱這里可以隨便填一個即可。
這里選擇NO。
2)、PowerShellServer配置
請按如下方案進行配置。
1、勾選作為服務運行。
2、勾選截圖中的兩項,並且配置SSH Port。關於SSH port需要注意
a、不要和電腦其他端口沖突;
b、如有防火牆,需要配置該端口在防火牆中不被攔截;
c、如你的機器是阿里雲、華為雲等,需要找管理員給你對外開放此端口;(特別重要)
配置好后且啟動了powershell,在機器上輸入netstat -an,應該可以看到配置的ssh端口。
3、勾選SFTP選項,並且配置后續接收Jenkins發送的代碼包的默認目錄。
4、配置使用密鑰訪問。
注:上一步的前提是,將部署Jenkins機器生成的公鑰(參考上一篇文章https://www.cnblogs.com/chooperman/p/14061469.html),復制到項目所在機器中,一般放在.ssh文件夾下。
5、點擊啟動即可。
注意:PowerShellServer工具最多同時只能1個客戶端連接,后續在調試的時候要注意不要在命令行已連接的時候,同時嘗試用Jenkins連接,會報錯。
3)、PowerShellServer連接
為了方便問題的排查,我們選擇一步步進行PowerShellServer連接。首先通過手動方式的連接,排除PowerShellServer本身的配置問題。在此基礎之上,我們再通過Jenkins任務的配置去連接。
a)、手動通過Jenkins機器連接項目服務器
Jenkins所在機器安裝ssh服務后,可以使用命令行的方式進行遠程連接項目服務器。如果沒有安裝ssh服務,也可以使用putty或者xshell等工具連接,原理一樣。下面介紹命令行的方式連接。
由於部署Jenkins的機器也是windows,輸入cmd進入命令行后,輸入如下命令嘗試連接項目服務器。
ssh -p SSH端口號 機器IP
1、-p SSH端口號用於指定SSH端口號,這里的端口號則是在PowerShellServer的server setting中配置的。
2、若需顯示詳細的連接信息,可以輸入-v 命令,即ssh -v -p SSH端口號 機器IP
3、由於使用密鑰連接,命令中不需要在ip前面指定訪問用戶名。
如上圖所示,即表明成功通過SSH命令遠程連接上了項目的windows server服務器。可以輸入一些命令來進一步驗證。另外PowerShellServer工具中也同時顯示了已被Jenkins機器連接上。
b)、Jenkins配置連接項目服務器
由於上一步已經確認ssh本身是OK的,這里我們就放心的進行Jenkins側的相關配置。
進入系統配置
這里進行2處SSH的配置
首先配置SSH remote hosts(用於后續通過ssh輸入命令行,其實Publish over SSH中也可以使用命令,但其命令在Jenkins的控制台命令中不回顯,因此使用SSH remote hosts輸入命令,起到回顯的作用。感興趣可以自己試試)。如實填寫IP、SSH端口號、選擇全局憑證(即Jenkins服務器生成的私鑰,配合項目服務器已經有的公鑰,用於遠程訪問項目機器,參考https://www.cnblogs.com/chooperman/p/14061469.html),點擊check connection,發現成功即可。
配置Publish over SSH(用於后續將生成的代碼包放到遠程服務器)。這里和上圖的配置基本一致,區別是這里沒有使用配置好的全局憑證,而是單獨在某個SSH Server中配置了私鑰。當然這里也可以使用全局憑證,個人喜好。
好了,到目前為止我們確保了后續Jenkins可以通過SSH工具把代碼包發送到windows server服務器。下一章開始介紹,如何配置1個Jenkins的任務用於日常構建vue項目,並部署到windows服務器上。