当前位置: 首页 > 知识库问答 >
问题:

运行Jenkins时,从FTP下载文件会被卡住

冯和硕
2023-03-14

在我的测试中,我试图从FTP下载一个文件。当我在本地PC或BrowserStack上运行这个程序时,它工作得很好,但当我将它上传到jenkins时,它会被卡在队列中。我不明白有什么区别为什么它不在詹金斯身上运行?我设法建立了到FTP的连接。下面显示的代码是下载文件的方法。

布尔成功=ftpClient。retrieveFile(远程文件、输出流);

    public static File downloadFileFromFtp(String fileName, String ftpFilePath, String downloadDirectory, String fileExtension, ExtentTest test) throws Exception {
    FTPClient ftpClient = new FTPClient();
    ftpClient.connect(AutomationPropeties.ftpHost, Integer.valueOf(AutomationPropeties.ftpPort));
    ftpClient.login(AutomationPropeties.ftpUsername, AutomationPropeties.ftpPassword);
    ftpClient.enterLocalPassiveMode();
    System.out.println("loged in ftp");
    if (ftpClient.isConnected()) {
        test.log(LogStatus.INFO, "Connected Succesfuly to ftp server.");
        System.out.println("loged in ftp");
    } else {
        test.log(LogStatus.INFO, "Failed connecting to ftp.");
        System.out.println("not loged in ftp");
    }
    String remoteFile = ftpFilePath + fileName + ".xlsx";
    System.out.println(remoteFile);
    // File downloadFile = new File(downloadDirectory+fileName+".xlsx");

    File downloadFile = File.createTempFile(fileName, ".xlsx");
    System.out.println("reached the try");
    try (OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(downloadFile))) {
        System.out.println("finished with the output");
        boolean success = ftpClient.retrieveFile(remoteFile, outputStream);
        System.out.println("retrive the file & conection closed");
        if (success) {
            test.log(LogStatus.PASS, "File was downloaded succesfuly");
        } else {
            test.log(LogStatus.FAIL, "Failed to download file");
        }
    } finally {
        ftpClient.logout();
        ftpClient.disconnect();
    }
    return downloadFile;
}

共有2个答案

耿敏达
2023-03-14

我是BrowserStack的Mukul。我们最近发布了一个Jenkins插件,它可能会帮助你。

耿俊
2023-03-14

也许Jenkins FTP插件就是你所需要的。詹金斯可以用工蜂来定义(你不觉得比奴隶好多了吗?)服务器,以便作业可以在不同的物理服务器上运行。

如果您查看插件,请报告是否有帮助。

更新

使用:

curl -O ftp://server/path/to/file
 类似资料:
  • 我有这个代码来下载一个文件。 这是服务器和密码的一部分。 简单的填充下载,但此行出错 它给了我错误,我希望你能理解我现在面临的问题 java.net.SocketExc0019:软件导致连接中止:套接字写入错误在java.net.SocketOutputStream.socketWrite0(本地方法)在java.net.SocketOutputStream.socket写入(SocketOutp

  • 问题内容: 似乎只能通过以下方式通过FTP上传文件: https://wiki.jenkins- ci.org/display/JENKINS/Publish+Over+FTP+Plugin 但是我需要通过FTP下载文件,为此我可以编写一个groovy插件,但是似乎没有这个插件 问题答案: 可能是因为在构建过程中使用单线下载文件很简单: 卷毛工具几乎可用于所有操作系统。 如果您只需要通过FTP下载

  • 我正试图下载一些公共数据文件。我通过screensrap获取指向文件的链接,这些文件看起来都是这样的: 我在Requests library网站上找不到任何文档。

  • 我必须从FTP服务器下载最新文件。我知道如何从我的计算机下载最新文件,但我不知道如何从FTP服务器下载。 如何从FTP服务器下载最新文件? 这是我从电脑上下载最新文件的程序 好的,使用此代码我知道最后一个文件的日期,但我如何知道这个文件的名称?????????

  • 希望有人能帮我, 场景:我是, 导航到有下载图标的页面 单击“下载”图标 .pdf文件开始下载到我的项目目录 注意:下载过程中不会显示确认消息,只要单击下载图标,文件就会被下载 观察到:当在本地运行测试用例时(从mvn命令和testng命令),它似乎正在工作并将文件下载到我的目录中。 然而,同样的案例似乎不适用于詹金斯。该文件不会下载到 Jenkins Directory。 本地: Windows

  • 问题内容: 我有FTP,我需要在上载目录中列出FTP中的所有文件,单击任何列出的文件后,它将从FTP下载特定文件。 它在上载目录中列出了我的文件,但是当我尝试下载文件时,它会键入“没有文件” 我的代码: 问题答案: 您在生成的标记中的链接指向不包含链接文件的Web服务器。 您需要做的是链接到PHP脚本,并为其指定要下载的文件的名称。然后,脚本将从FTP服务器下载文件,并将下载的文件传递回用户(至W