Has anyone created a Hudson or Jenkins Job to deploy to an AWS Beanstalk Instance?
I want to move an app I have to beanstalk. I want to have an easy automated way to promote new builds though. The console interface in beanstalk is nice: I can just get the war file and upload it. However, it would be nice if I could just run a Jenkins job and have it deploy when it finished building the war file.
I found a thread on here about doing ssh to a beanstalk instance. But there is probably more to it because Beanstalk is probably a cluster with a master that wants to be the deploy manager.
Worth doing or should I just accept the upload page?
If you're using Maven for your builds, I wrote a plugin to automate beanstalk and Elastic MapReduce deployment:
I'm looking for testers! :)
Afaik beanstalk has a web interface so you could create a selenium script to upload it for you. That would be a bit of a hack though.
Uploading via ssh or so it probably a good option. Also beanstalk has an API (http://aws.typepad.com/aws/2011/01/aws-beanstalk-apis-and-command-line-tools.html) that you could easily use from a script and then executed from hudson.
If you use a maven build you could have the build do the deployment invocation as part of e.g. the maven deploy phase after a successful build including unit tests..
I also didn't manage to find a Jenkins plugin to do so.
A good first step would be Luca's Beanstalk upload script to build a Jenkins plugin: https://github.com/blanq/beanstalk-upload
Just FYI: I released a Plugin for that:
you can use Khan Academy's open source jenkins ec-2 plugin. https://github.com/Khan?page=2