in src/main/java/com/microsoft/jenkins/appservice/commands/FTPDeployCommand.java [112:158]
public Void call() throws FTPException {
FTPClient ftpClient = new FTPClient();
try {
listener.getLogger().println(String.format("Starting to deploy to FTP: %s", ftpUrl));
ftpClient.connect(ftpUrl);
if (!ftpClient.login(ftpUserName, ftpPassword)) {
throw new FTPException("Fail to login");
}
// Use passive mode to bypass client firewall
ftpClient.enterLocalPassiveMode();
final String absTargetDirectory = SITE_ROOT + Util.fixNull(targetDirectory);
if (!ftpClient.changeWorkingDirectory(absTargetDirectory)) {
// Target directory doesn't exist. Try to create it.
if (!ftpClient.makeDirectory(absTargetDirectory)) {
throw new FTPException("Fail to make directory: " + absTargetDirectory);
}
}
if (!ftpClient.changeWorkingDirectory(absTargetDirectory)) {
throw new FTPException("Fail to change working directory to: " + absTargetDirectory);
}
listener.getLogger().println(String.format("Working directory: %s", ftpClient.printWorkingDirectory()));
final FilePath sourceDir = workspace.child(Util.fixNull(sourceDirectory));
final FilePath[] files = sourceDir.list(filePath);
for (final FilePath file : files) {
uploadFile(ftpClient, sourceDir, file);
}
} catch (IOException | InterruptedException e) {
throw new FTPException(e);
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
listener.getLogger().println("Fail to disconnect from FTP: " + e.getMessage());
}
}
}
return null;
}