Plugin Information
This plugin uploads build artifacts to repository sites using SCP (SSH) protocol. First you should define SCP hosts on hudson global config page. After that you can refer to this hosts using select list. See picture for global config:

After entering username/password automatic logon check is performed to see if you entered it correctly.
Root repository path must exist before you can reference it and should be accessible by user who do publish of files.
Then per job you can enable publishing of build artifacts:

Source points to files which will be uploaded. You can use ant includes syntax, eg. folder/dist/*.jar. Path is constructed from workspace root.
Note that you cannot point files outside the workspace directory. For example providing: ../myfile.txt won't work...
Destination points to destination folder on remote site. It will be created if doesn't exists and relative to root repository path.
You can define multiple blocks of source/destination pairs.
Change Log
Version 1.6 (Feb 2, 2010)
- Update code for more recent Hudson
Version 1.5.2 (Nov 12, 2008)
- Fix for issue #2609: version 1.5.1 of the SCP plugin is broken for "password only" authentication
Version 1.5.1
- Enhancement, support for public key authentication (issue #1269)
- Enhancement, works now with Maven2 jobs (issue #1845)
Version 1.5
- Improved error diagnosis when the specified file pattern didn't match anything.
Version 1.4 (2008/07/23)
Version 1.3
- fixed bug with subdirectories creation
Version 1.2
Comments (21)
Feb 15, 2008
Anonymous says:
Can you access other job's lastSuccessful? I want to create a new schedule...Can you access other job's lastSuccessful? I want to create a new scheduled job that grabs the last successful build artifact of a particular job. Is this possible?
Apr 24, 2008
Bartek Zdanowski says:
Nope, you cannot. I spent some time debbuging SCP Plugin. You cannot access file...Nope, you cannot. I spent some time debbuging SCP Plugin. You cannot access files outside workspace. I need version that allows it and maybe I'll fix it and put new plugin somewhere. Or Ramil will do it?
Jun 24, 2008
Trond Andersen says:
Does this plugin work on Windows with Cygwin installed? If so - this should prob...Does this plugin work on Windows with Cygwin installed? If so - this should probably be mentioned on this Confluence page.
Aug 22, 2008
Luke Alford says:
If you only have a single artifact you want to copy somewhere, are there any tho...If you only have a single artifact you want to copy somewhere, are there any thoughts to adding the ability to rename said artifact? Near as I can tell, the destination only allows a relative directory path and there's no way to include a new file name. This would be a very useful feature to me since I am using this tool to copy an artifact that has a version number in the file name (for QA and production) as well as for my development automated testing tool that would like to be version agnostic (so I don't have to change the automated tester every time the artifact version changes).
I'm thinking something like the following, but I haven't grabbed the source yet to find out what might be involved in doing this.
artifact name = product-1.0.ear
source: workspace/build/artifacts/*
destination: qa/product/1.0/product-1.0.ear
destination: dev/product/trunk/product-trunk.ear
(where product-*.ear is the file name, not a folder)
Jun 09
Adam Burnett says:
I second this request.I second this request.
Sep 02, 2008
Hakan ERDOĞAN says:
This plugin is very useful, it runs on a free-style software project but fails o...This plugin is very useful, it runs on a free-style software project but fails on a maven project.
Actually it never tries to run on a maven project, no log, no process.
Is there a solution for this?
Jan 05, 2009
Peter Kahn says:
The add files option doesn't seem to provide fields for me to enter data. ...The add files option doesn't seem to provide fields for me to enter data. I have tried this on Firfox/IE and Chrome. Is there example xml for the config.xml so I can sneak passed this?
Jan 05, 2009
Peter Kahn says:
Never mind, it was a configuration problem. I installed the latest plugin ...Never mind, it was a configuration problem. I installed the latest plugin prior to upgrading hudson. This made hudson incapable of editing the build configuration at all. All was fine after doing this:
Jun 20, 2009
Reiner Saddey says:
I'm impressed, it's working like a charm! Still, I'd like to propose an enhancem...I'm impressed, it's working like a charm! Still, I'd like to propose an enhancement:
I'd wish for an additional id field, so multiple destinations (i.e. repository paths and logins) can be set-up for the same host.
Right now, the hostname field serves two purposes:
1. Designate the FQDN (DSN-name or IP) of the target-host
2. State the name for a set of repository settings (i.e. port, repository path, user, password, etc.)
I have to admit that I don't use the SCP plugin to copy to a repository at all. Instead build artifacts are being copied to (Apache-) www-folders so they can then be downloaded and installed (.jads and .jars in my case). That's fine for a single target (i.e. repository), but appears to fail if there are numerous target directories (and each of them requiring a different login).
Should I a dare to open an enhancement issue?
Jun 24, 2009
Sterling Heibeck says:
I've got everything working brilliantly with this plugin except that it won't cr...I've got everything working brilliantly with this plugin except that it won't create subdirectories in the Source root
Has anyone found a solution to this?
Jul 21, 2009
Dan Morrow says:
I'm trying to recursively copy over a directory from one location to another usi...I'm trying to recursively copy over a directory from one location to another using the SCP plugin, and can't figure out how to do it with the Ant glob syntax.
Previously, I had a shell script that would do this:
scp -r $localFile $username@$remoteHostIP:$remoteDestDir
This would do a full recursive copy from "localFile" (really, local-dir) to the remoteDestDir location. I don't know how to specify this with the SCP plugin. I guess I could go back to running the shell script, or have several SCP calls that copy each sub-directory over, but that seems weird.
Any idea how I might do this?
-Dan.
Dec 03, 2009
Shannon Qian says:
Report an issue - SCP plug-in does not support concurrent SCP sessions. As Huds...Report an issue - SCP plug-in does not support concurrent SCP sessions.
As Hudson support multi-executor within one slave. it means scp stands chance of being invoked simultaneously by more than one job. I am encounted to such a requirement that success of job-0 triggers job-1 and job-2, both of which employ scp as post-build action. They failed scp simultaneously. but They do succeed separately.
I am willing to study your source codes. but I can not connect to https://svn.dev.java.net/svn/hudson/trunk/hudson/plugins/scp and I don't know why. can anyone give my a copy?
Mar 03
Praveen Atluri says:
I am using this plugin in a maven project. It is working Excellent but Is there ...I am using this plugin in a maven project. It is working Excellent but Is there any option to run this plugin before running M2 extra build steps plugin.
Mar 05
Brent De Vela says:
Hi, I am a bit new to this plugin and I want to use the "key" authentication. Ho...Hi, I am a bit new to this plugin and I want to use the "key" authentication. How do I specify the key file or where do I put it? I tried using a url but it doesn't seem to work.
Mar 19
Andrei Pozolotin says:
Hi, does this plugin has a log? where? I keep getting "Can't connect to server" ...Hi, does this plugin has a log? where? I keep getting "Can't connect to server" for all external sites; hudson scp config page test can connect only to localhost; I also verified that I can connect to all these other sites with normal ssh client OK. Thank you.
[SOLVED] in this case I needed to provide following line in sshd_config: PasswordAuthentication yes
despite this presumably being the default setting on this freebsd box and also working fine for manual logins. Cheers.
Mar 30
Arturo says:
I have 2 question for the plugin developers. 1.This pluging appears in the last...I have 2 question for the plugin developers.
1.This pluging appears in the last section of the project's configuration form and I need it to run it before a shell
script using shh pluging. Is it a way to change the order in which this pluging runs regards to others.
2. Right now is only possible to choose one site peer project. Is it a way to include the option to add more sites
to upload to in the same project?.
Apr 25
barak yaish says:
Facing the same problem - how can one determine the order of plugin runs? Is the...Facing the same problem - how can one determine the order of plugin runs? Is there an open ticket for that?
Thanks.
Apr 28
Jay Sellers says:
"Can't connect to server" Hudson is running as a war in glassfish, started by th..."Can't connect to server"
Hudson is running as a war in glassfish, started by the user "glassfish".
I'm getting this error but can't determine why. When in cli on the box in which hudson is running, I can execute:
scp testFile root@remotebox:/tmp/
as the glassfish user and it works fine.
But when I try to add "remotebox" as an SCP host in hudson, I get "Can't connect to server".
I tried the fix above, editing sshd_config for PasswordAuthentication yes but it didn't seem to help.
Any other ideas?
Jul 28
littlefatbird says:
Help me, help me, please help me, who can tell me what happened as below message...Help me, help me, please help me, who can tell me what happened as below message...
Aug 12
Andrei Pozolotin says:
COPY AND KEEP THE TREE? currently, if you have on source: dir1/dir2/dir3 and ...COPY AND KEEP THE TREE?
currently, if you have on source:
and you specify:
then all contents of all folders on the source "dir1/dir2/dir3" will be flattened (merge+overwrite) inside destination "dir";
how can you copy and preserve directory tree?
Aug 30
Gabriel Baez says:
Nice plugin, it would be great if it allowed you to select two diffe...Nice plugin, it would be great if it allowed you to select two different repository to upload to.