jenkins連接windows服務器配置


背景

有時候針對特殊項目配置,必須使用windows作為服務器使用;對於經常使用jenkins進行項目自動化的構建,所以想到的第一個念頭就是如何使用jenkins進行windows項目的構建呢?

對於linux系統,需要使用ssh進行文件的傳輸,通過資料篩選和實踐,發現windows也是同一原理。

環境配置

jenkins服務器:windows系統(windows10)

web服務器:windows系統(PC2,可以是windows10或者2012)


windows服務器powershell Server端口號設置

使用windows服務器,同樣也必須支持SSH連接,這里使用的是powershell Server作為中間件,進行傳輸配置

powershell Server可以訪問官網下載或者如下地址鏈接:https://pan.baidu.com/s/1iJJis5KGqR0uhXa0OZumDw 提取碼:jfwx

安裝完成之后使用管理員身份運行程序:打開配置,如下默認22端口如果被占用,需要修改其他端口號;這里修改端口號為1122;

image-20201026144220980

jenkins-服務器putty配置&證書

客戶端(jenkins服務器)連接powershell Server可以使用用戶名密碼連接或者通過證書連接;證書連接需要通過puttygen生成證書並上傳到windows服務器上,如下打開puttygen

image-20200929104920890

密鑰生成后,可以為密鑰設置密碼,點擊save private key, 保存客戶端私鑰,保存為自定義后綴名為“.ppk”的文件:

image-20200929105228292

之后不要點擊save public key,手動復制public key的內容到.txt文件保存(其他任何文件類型皆可),並上傳到web服務器端:

如圖

image-20201026142811190

powershell Server 證書配置

web服務器上PowerShell server 配置如下,修改配置后要重啟服務:

image-20201026145115461

putty連接powershell server配置:

打開putty,設置IP和端口,connection-SSH-Auth 設置如下

image-20200929110103542

然后點擊"open"連接powershell server,連接如下:提示輸入"rsa-key-20200929",需要輸入連接服務器的私鑰,

image-20200929110500236

輸入私鑰之后,提示"SSH-Enable powerShell Acess for Windows"表示連接成功,如上圖。


jenkins構建配置

這樣jenkins服務器就可以和web服務器通信了,接下來就是通過jenkins上傳war完成項目自動化構建,在jenkins系統配置中設置windows服務器的連接配置,如圖

image-20200929111556987

配置中需要注意連接的Username、Remote Directory、Passphrase / Password以及Port。配置好之后可以點擊[Test Configuration]測試是否配置完成。

項目自動化構建

新建一個自由風格的項目,基本配置這里忽略,特別說明構建后的操作如下

image-20201026150948284

killJar腳本如下

@echo off
D:
cd D:\project\tomcat-stj\tomcat-rcm-stj\bin
::關閉tomcat
call shutdown.bat
:: 休眠10秒
ping 127.0.0.1 -n 1 >nul

jenkins-auto-start腳本如下

@echo off
:: 源文件設置
:: set SourceFile=C:\"Program Files"\nsoftware\"PowerShell Server 2020"\sftproot\rcm*.war
:: 刪除發布文件
D:
rd /s/q D:\project\tomcat-stj\tomcat-rcm-stj\webapps\rcm_stj\
echo test2
:: 新建文件夾rcm_stj
md "D:\project\tomcat-stj\tomcat-rcm-stj\webapps\rcm_stj"
:: XCOPY FILES
xcopy C:\"Program Files"\nsoftware\"PowerShell Server 2020"\sftproot\rcm*.war D:\project\tomcat-stj\tomcat-rcm-stj\webapps\rcm_stj /E /Y
echo test3
:: 重命名war包
ren D:\project\tomcat-stj\tomcat-rcm-stj\webapps\rcm_stj\rcm*.war rcm_stj.war
:: 復制war包會/E會產生空的rcm_stj文件夾,需要刪除
rd /s/q D:\project\tomcat-stj\tomcat-rcm-stj\webapps\rcm_stj\rcm_stj\
:: 解壓war包
d:
cd D:\project\tomcat-stj\tomcat-rcm-stj\webapps\rcm_stj
jar -xvf rcm_stj.war
:: 休眠10秒
:: ping 127.0.0.1 -n 10 >nul
echo test4
::替換配置文件
copy /Y D:\project\bak\rcm_stj\jdbc.properties D:\project\tomcat-stj\tomcat-rcm-stj\webapps\rcm_stj\WEB-INF\classes\
copy /Y D:\project\bak\rcm_stj\license.lic D:\project\tomcat-stj\tomcat-rcm-stj\webapps\rcm_stj\WEB-INF\classes\
:: call startup.bat
:: 休眠10秒
ping 127.0.0.1 -n 10 >nul
:: 刪除發布文件夾中的war包
del D:\project\tomcat-stj\tomcat-rcm-stj\webapps\rcm_stj\*.war
:: 刪除xftp中的所有war文件
del C:\"Program Files"\nsoftware\"PowerShell Server 2020"\sftproot\*.war
:: call startup.bat
:: 休眠10秒
:: ping 127.0.0.1 -n 10 >nul
::啟動tomcat
D:
cd D:\project\tomcat-stj\tomcat-rcm-stj\bin
::關閉tomcat
call startup.bat
:: 休眠10秒
ping 127.0.0.1 -n 10 >nul

腳本執行思路說明流程圖如下:

stateDiagram [*] --> 停止tomcat 停止tomcat --> 刪除發布war 刪除發布war --> 新建rcm_stj文件夾 新建rcm_stj文件夾 --> 復制重命名war包到該文件夾 復制重命名war包到該文件夾 --> 解壓war包 解壓war包 --> 替換配置文件 替換配置文件 --> 刪除rcm_stj中的war包 刪除rcm_stj中的war包 --> 刪除sftproot中的war包 刪除sftproot中的war包 --> 啟動tomcat 啟動tomcat --> [*]

其他補充

war上傳位置說明

通過putty連接powershell server上傳的war的默認位置是在powershell server的安裝路徑sftproot目錄下

windows腳本命令

del是刪除文件夾的命令
rd或rmdir是刪除文件夾包括文件
copy是復制單一的文件信息,而xcopy是復制包括文件夾

錯誤處理

在構建時會出現提示如圖"ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 960,001 ms]"

image-20201106170023001

這個問題經查證是:連接超時,而Jenkins無法從腳本中正確退出。可以參考https://stackoverflow.com/questions/11290540/jenkins-text-finder-unable-to-success-my-build

解決方法:

第一步:在構建后操作鍾,設置"Exec timeout(ms)"設置為項目構建時間,為毫秒為單位;這里根據項目情況設置為960000;且勾選"Exec in pyt"如圖

image-20201106172922660

第二步:在Exec command中添加"exit 0"作為結束,如圖

參考

https://blog.csdn.net/achenyuan/article/details/81166526

https://blog.csdn.net/achenyuan/article/details/81181347

https://blog.csdn.net/qq_39720249/article/details/88052325


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM