在Jenkins中使用FTP上传文件时,某些文件将被破坏

时间:2019-05-13 05:47:38

标签: c# jenkins ftp

我已经在办公室中设置了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服务器;没有文件已损坏。

1 个答案:

答案 0 :(得分:0)

在我重新安装64位Windows 7 Professional节点之一并将其设置好以进行部署之后,一切都可以在上面完美运行...

我不知道为什么,因为机器(硬件)是相同的。唯一的区别是操作系统。 所以在我的猜测中,也许这是网络适配器驱动程序的问题?

我将在此win7机器上进行更多的压力测试,并检查它是否始终有效,谢谢大家。