我已经在办公室中设置了Jenkins服务器(1个主服务器@Windows服务器2012 R2和2个节点@Windows 10 Professional 64位),用于自动部署Web应用程序。 Web应用程序通过FTP部署到IIS服务器(FileZilla Server v0.9.41 beta,我知道它很旧,但是管理员不允许我更新版本)。
最近,在将文件上传到服务器后,有时很少文件(大于8k字节)被破坏。有时它们是二进制文件(dll文件),有时是文本文件(Javascript文件)。我发现的唯一发现是,这些损坏的文件中丢失的字节是8K字节次。
例如,上传3个文件:A.dll(100K字节),B.js(25K字节),C.dll(200K字节)。 第一次,损坏的文件可能是A.dll,并且在服务器上其大小仅为84K字节。 下次损坏的文件可能是B.js,大小仅为17K字节。 丢失的字节不是这些损坏文件的开头或结尾部分,它们可能出现在文件中的任何位置。
损坏的文件可能存在于任何子文件夹中,并且FTP服务器显示上传过程正确。
我尝试使用Jenkins插件“通过FTP插件发布”和WinSCP.exe进行FTP上传(使用Jenkins Windows Batch Shell),但是偶尔还是会出现此错误。
我还使用WinSCP.dll编写了一个C#应用程序来执行上载操作,但该错误仍未解决。无论文件是从Jenkins主节点还是从节点上传的,它仍然存在。
但是,如果我通过任何FTP客户端(例如FileZilla FTP Client,任何版本)手动上传到FTP服务器,则所有文件都可以正确上传。
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = serverAddr,
UserName = FTP_USER_NAME,
Password = FTP_USER_PASSWORD[serverKey],
};
using (Session session = new Session())
{
session.Open(sessionOptions);
switch (action)
{
case FTPActionType.Upload:
{
session.PutFiles(localPath.Replace(@"/", @"\"), remotePath.Replace(@"\", @"/"));
break;
}
default:
{
break;
}
}
}
我希望所有文件都可以在Jenkins中正确上传到FTP服务器;没有文件已损坏。
答案 0 :(得分:0)
在我重新安装64位Windows 7 Professional节点之一并将其设置好以进行部署之后,一切都可以在上面完美运行...
我不知道为什么,因为机器(硬件)是相同的。唯一的区别是操作系统。 所以在我的猜测中,也许这是网络适配器驱动程序的问题?
我将在此win7机器上进行更多的压力测试,并检查它是否始终有效,谢谢大家。