在本地先處理好要上傳的站點檔案之後,可能會因為一些網頁切圖導致ftp上傳不穩定,中斷,或者檔案佔用的問題。

那麼換了一種實現思路,要藉助jenkins的工具jenkins-cli.jar。

解決思路:

1、本地處理好要上傳的站點檔案,通過壓縮軟體進行打包,其中壓包的命名有規律,比如日期+BuildID的形式。

2、用FTP外掛進行上傳到外網的目錄。

3、外網的機器上也同樣安裝Jenkins的環境,並新建好一個Job,這個Job增加引數化構建,引數為BuildID,然後增加批處理進行BuildID的壓縮包查詢並解壓。

4、本地的Jenkins構建好Job之後,再通過jenkins-cli.jar呼叫外網的解壓Job進行解壓。

這樣一來,解決了零碎檔案的上傳速度限制。

主要的解決步驟:

0、新建工程名:

1、外網機器上的Job上新增引數化構建(2.x預設已經安裝此外掛,不需要安裝其它)

2、外網機器上獲取Job上傳入的引數,可以利用引數進行批處理的查詢解壓

以下為批處理,其中引數為構建工程的輸入引數,其中備份操作上我直接排除了一些沒必要的資料夾內容

echo [INFO] 備份壓縮操作
call C:\"Program Files"\WinRAR\Rar.exe a -x*\Upload* -x*\ueditor* -x*\UploadFolder* -x*\DownloadFile* -x*\ErrorLog* -x*\LogFiles* %FilePath%.bak.rar %UnzipPath%
echo [INFO] 解壓操作
call c:\"Program Files"\winrar\rar.exe x -ep2 -o+- %FilePath% %UnzipPath%

3、本地的Jenkins處理好打包站點檔案並通過FTP上傳後,通過jenkins-cli.jar的遠端呼叫上面的外網工程(jenkins-cli.jar預設放在jenkins的安裝目錄Jenkins\war\WEB-INF\jenkins-cli.jar)

echo [INFO] 通過CLI呼叫公網Jenkins進行解包
java -jar "C:\Program Files (x86)\Jenkins\war\WEB-INF\jenkins-cli.jar" -s http://192.168.199.2:8080/ build Unzip -p FilePath=E:\wwwroot\inetpub\bak\%BUILD_ID%.push.rar -p UnzipPath=E:\wwwroot\inetpub\wwwroot\Green --username administrator --password administrator

上面的意思是:構建UnZip的專案,傳入了BUILD_ID這個引數值(這個是約定好的檔名方式,採用jenkins的buildid去找到檔案),後面是登入的管理員賬號密碼。