FTP provider supports the following protocols:
and can work in two modes:
Build artifacts are copied “as is” with preserving artifact folder structure. For example, if you are copying build artifacts
logs\testlog.log to remote FTP folder
builds\$(APPVEYOR_BUILD_VERSION)\results both files will be copied as
To copy artifacts use
artifact setting; leave it blank to FTP all artifacts.
This scenario is used for deploying web application from
.zip artifact. During deployment AppVeyor downloads artifact, unpacks it to a temporary directory and then copies all files from that directory to remote FTP location preserving directory structure.
To deploy artifact as an application use
sftp; default is
host) - FTP server host name or IP address without protocol prefix, for example
username) - FTP user name.
password) - FTP user password.
folder) - remote FTP folder to copy artifacts to or root of web application.
active_mode) - enable FTP active mode. Default mode is passive. This setting is ignored for
sftp protocol. There are caveats - see below.
artifact) - name of artifact(s) to copy. Leave blank to copy all artifacts.
application) - name of artifact with application package to expand to remote FTP location.
artifact: /.*\.nupkg/ # upload all NuGet packages to release assets
Active-mode FTP is often referred as “client-managed” session and thus requires a range of inbound ports opened on FTP client machine to to allow FTP server connections. You can read more about FTP modes in this article: https://support.microsoft.com/kb/283679
You can use Active-mode FTP only while deploying from build running on premium environment as you can control firewall on its build workers.
To allow incoming FTP connections add this PowerShell command to Install section on Environment tab of AppVeyor project settings or in
install section of
New-NetFirewallRule -DisplayName "Allow Inbound FTP" -Direction Inbound -Program 'C:\Program Files\AppVeyor\BuildAgent\Appveyor.BuildAgent.Interactive.exe' -RemoteAddress Any -Action Allow
Active mode won’t work from Environments as Azure Cloud Service worker roles doing deployment are not accessible from the internet. Anyway, we suggest switching to Passive mode unless you have a very strong reason of not doing so.