Due to some maintenance issues, this service has been switched in read-only mode, you can find more information about the why

and how to migrate your plugin documentation in this blogpost

Skip to end of metadata
Go to start of metadata

Plugin Information

View Publish Over FTP on the plugin site for more information.

This plugin is up for adoption. Want to help improve this plugin? Click here to learn more!

Publish Over ...

Read Publish Over ... wiki page first

Please read Publish Over first.
Common configuration options that are documented in the Publish Over ... wiki page will not be repeated here.

Change log


  • Send files to FTP servers
  • The plugin is "promotion aware" see Promotions
  • Publish to multiple servers in the "Post-build Actions"
  • Transfer complete directory structures, partial structures or just files
  • Option to delete all files in the remote directory before publishing
  • Use passive (PASV) or active (PORT) transfers
  • FTP can be used as a build step during the build process
  • Passwords are encrypted in the configuration files and in the UI


Create host configurations in the main Jenkins configuration

From the Jenkins home page, click "Manage Jenkins" and the click on "Configure System"

Find the FTP section (as below) and click on the "Add" button next to "FTP Servers"

You should now have the configuration options as below

Fill in Name, Hostname, Username, Password and Remote Directory. see Publish Over ... for common options for Host Configurations


If you click the "Advanced..." button for a configuration, then you will make more configuration options available (see below)

see Publish Over ... for common options for Host Configurations

Use active data mode

By default passive mode will be used to connect to the FTP Server.
In passive mode the client initiates all connections which will allow the client to send files through a firewall that has been configured to refuse all inbound connections (and does not create dynamic rules).
If you want to dissable passive mode, and have the client use PORT commands for the server to connect to the client to retieve the files, then you can check this box.

Don't make nested dirs

Do not try to create nested directories with a single MKD command
The default behaviour when creating directories is to try to create the target directory with single command, even if it is nested. If this fails, the plugin will fall back to creating each directory individually. Some FTP servers, when asked to create nested directories will respond with a success code, but will not create the directories correctly. This will result in directories being created in incorrect branches of the directory tree.
This option will not prevent the creation of nested directories, it is just a fix for badly behaved FTP servers.

Click "Test Configuration".
Add more server configurations (if required)

Configure a job to Publish Over FTP

Open a jobs main page and then click "Configure" from the left hand menu.

Find the "Send build artifacts over FTP" checkbox in the "Post-build Actions" section (as below) and click in the box.

You should now have the configuration options as below

see Publish Over ... for common options for Server

see Publish Over ... for common options for Transfer Sets

Source files

The build will fail if you do not select any Source files to transfer

Advanced (Transfer Sets)

If you click the "Advanced..." button for a Transfer Set, then you will make more configuration options available (see below)

see Publish Over ... for common options for Transfer Sets

ASCII mode

Transfer the files using ASCII mode.
This means that during the transfer, new lines and carriage returns will be converted from the format used on the client operating system to the format used on the servers operating system.
Do not use this option if your Source files pattern will match any binary files, as there is a good chance that binary files will be corrupted during transfer.

Clean remote

Delete all files and directories from the remote directory before uploading the new files.

Advanced (Publisher)

If you click the "Advanced..." button that is immediately below the "Add Server" button, then you will make more configuration options available (see below)

see Publish Over ... for common options for Publisher

Options to override the default Promotion behaviour

If you are configuring an action in a promotion, new options will become available.

see Publish Over ... for common options for Promotions

Change log

1.9 (03/03/2013)

  • JENKINS-16681 Allow source file names and paths to contain whitespace
    • Add Advanced Transfer Set option "Pattern separator"
  • JENKINS-16976 Upload creates unneeded folders
    • Add Advanced FTP Server option "Don't make nested dirs"

1.8 (22/10/2012)

  • JENKINS-13126 Option to create empty directories
  • No default excludes option now available for all versions of Jenkins
  • Exclude files pattern now available for all versions of Jenkins

1.7 (10/09/2012)

  • JENKINS-14283 Enable FTP as a build step
  • JENKINS-13693 Add option to disable default excludes
  • Prefix Publish over to the global config section title
  • Move the defaults configuration in the global config to an Advanced section

1.6 (11/01/2012)

  • Advanced option to enable the FTP control channel encoding to be set for an FTP server configuration

1.5 (10/11/2011)

  • Enable the server credentials to be specified/overriden when configuring the publisher in a job

1.4 (05/08/2011)

  • JENKINS-10599 When using the Flatten files option, do not create the Remote directory if there are no files to transfer (unless Clean remote is also selected)

1.3 (21/07/2011)

  • JENKINS-10363 Allow the publisher default values to be changed in Manage Jenkins (on Jenkins and Hudson 1.391 - 1.395)

1.2 (10/07/2011)

  • Remove duplicate delete button from the system config page

1.1 (09/07/2011)

1.0 (08/07/2011)

0.8 (20/05/2011)

  • Remove "Give the master a NODE_NAME" option when running on Jenkins 1.414 or later
  • Default the "Give the master a NODE_NAME" option to 'master' when run on a Jenkins older than 1.414

0.7 (09/05/2011)

  • advanced Transfer Set option to Exclude files
    (option only available with Jenkins 1.407 and later)

0.6 (10/04/2011)

  • reduce horizontal space taken up by labels in the configuration views

0.5 (01/04/2011)

  • clean remote - option to delete all files in the remote directory before publishing

0.4 (18/02/2011)

  • passwords encrypted in config files and in UI (now requires Hudson > 1.384 or any Jenkins)
  • environment variables for substitution now include build variables (including matrix build axis)

0.3 (16/02/2011)

  • added form validation
  • removed debug logs for new configurations

0.2 (12/02/2011)

  • 2 new configuration options when in promotion
    • Use the workspace when selecting "Source files"
    • Use the time of the promotion when using "Remote directory is a date format"

0.1 (08/02/2011)

  • Initial release

Questions, Comments, Bugs and Feature Requests

Please post questions or comments about this plugin to the Jenkins User mailing list.
To report a bug or request an enhancement to this plugin please create a ticket in JIRA.


  1. Unknown User (mdkf)

    Could you post the changelog for version 1.10?

  2. Unknown User (franqus)

    Does this plugin also support FTP servers using SSL (AUTH TLS) ? 

  3. Unknown User (rstephens)

    Has anyone tried to set source files to a directory OUTSIDE the workspace?

    I tried using a direct path: "C:/myfolder/**".

    I tried using a relative path "../../../../../myfolder/**".

    None of these worked.

    Is this even possible?

  4. Unknown User (nosk)

    Is it planned to make this plugin compatible with pipeline?

  5. Unknown User (bobenose)

    Throwing my 2-bits in here as a service to humanity (as the new plugin hosting site doesn't take comments, and FTPS config documentation is seriously lacking)

    Found I needed to use explicit TLS support (FTPES) in order to work with Box - using port 21, with "Use FTP over TLS" enabled, and a cert found via "openssl s_client -connect YOURSITEHERE:990 | openssl x509 -pubkey   pasted into the Trusted Certificate field including the BEGIN and END CERTIFICATE lines.  In my case, I also had to set US-ASCII as the Control encoding, but this might just be an oddity of my setup (Jenkins 2.79, with plugin 1.2, on Windows 7)



    1. Unknown User (pgquiles)

      Or you can update the publish-over-ftp plugin to version 1.16-SNAPSHOT (you'll need to build from source after February 15th, 2018), which works fine with FTPS, FTPES and pipelines.

  6. There is an error in the code.

    BapFtpHostConfiguration.java:262 should be as follows to make it work with an explicit FTP over TLS

    if ((useImplicitTls || useFtpOverTls) && ftpClient instanceof FTPSClient) {