【问题标题】:While uploading files using FTP in Jenkins, some files will be corrupted在 Jenkins 中使用 FTP 上传文件时,某些文件会损坏
【发布时间】:2019-05-13 05:47:38
【问题描述】:

我已经在办公室设置了 Jenkins 服务器(1 个主服务器@Windows server 2012 R2 & 2 个节点@Windows 10 Professional 64bits)用于自动部署 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 插件“Publish Over FTP Plugin”和 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 服务器;没有文件损坏。

【问题讨论】:

  • 那么Session到底是什么
  • 请提供日志文件 (Session.SessionLogPath)。
  • @TheGeneral 它是 WinSCP 库中的 WinSCP.Session。
  • @Martin Prikryl,好的,我已经在代码中添加了日志设置。下次发生错误时,我会向您显示错误日志,谢谢。
  • “如果我通过任何 FTP 客户端手动上传到 FTP 服务器......所有文件都可以正确上传” - 如果包含 WinSCP,请发布等效的 WinSCP GUI显示成功上传的会话日志文件。

标签: c# jenkins ftp


【解决方案1】:

在我使用 Windows 7 Professional 64 位重新安装一个节点并将其设置为部署后,一切都在其上运行良好...

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

我会在这台win7机器上做更多的压力测试,看看它是否能一直工作,谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 2018-05-03
    相关资源
    最近更新 更多