We've been using a mix of Ant and Robocopy scripts to deploy our apps. While it works it requires some technical skills, and in some instances logging into remote servers.
I wanted to develop a process where our QA person (who is non-technical) could easily deploy and move code around for testing.
I won't go into setting up Jenkins since that is well documented and fairly straightforward.
When I first starting laying out this process I wanted to keep things fairly similar to the way they worked currently only replacing the manual steps with automated ones. But we're also using Git which I throught I could take advantage of...
First question - how can the Jenkins server talk to another server where I needed to run code?
My initial thought was to simply SSH between the two boxes but then I started reading about Jenkins master and slaves. Normally this mode is used to off load tests/jobs from the master to the slave to free up resources or for long running tests. But they can also be used for easy remote access to additional resources. In my case I'm on Windows, so SSH is not natively available. But I can connect via Java Web Start (JNLP) from my master to my slave.
The process to get things setup is easy:
First we need to create a new 'node' on our 'master' Jenkins server.
Now we need to access the remote box and setup the 'slave'. Note - the slave machine will need to have a current JAVA install.
Now the slave will be setup to start as a Windows service so if the machine is rebooted you can re-connect as a slave.
Once installed you should return to Master Jenkins server and check on Node status.
It should now say "Connected via JNLP agent."
In my next point we'll configure a new job to use this remote slave node.