Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

时间:2023-03-09 01:33:55
Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

在本地先处理好要上传的站点文件之后,可能会因为一些网页切图导致ftp上传不稳定,中断,或者文件占用的问题。

那么换了一种实现思路,要借助jenkins的工具jenkins-cli.jar。

解决思路:

1、本地处理好要上传的站点文件,通过压缩软件进行打包,其中压包的命名有规律,比如日期+BuildID的形式。

2、用FTP插件进行上传到外网的目录。

3、外网的机器上也同样安装Jenkins的环境,并新建好一个Job,这个Job增加参数化构建,参数为BuildID,然后增加批处理进行BuildID的压缩包查找并解压。

4、本地的Jenkins构建好Job之后,再通过jenkins-cli.jar调用外网的解压Job进行解压。

这样一来,解决了零碎文件的上传速度限制。

主要的解决步骤:

0、新建工程名:

Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

1、外网机器上的Job上添加参数化构建(2.x默认已经安装此插件,不需要安装其它)

Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

2、外网机器上获取Job上传入的参数,可以利用参数进行批处理的查找解压

Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

以下为批处理,其中参数为构建工程的输入参数,其中备份操作上我直接排除了一些没必要的文件夹内容

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去找到文件),后面是登录的管理员账号密码。