在本地先處理好要上傳的站點檔案之後,可能會因為一些網頁切圖導致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去找到檔案),後面是登入的管理員賬號密碼。