I'm in the process of building a company from scratch (Tomcat+Spring Rest+Java) so we have the luxury to do some things right (or at list not repeat our past mistakes) , one of the goals we want to achieve is the ability automatically build , test(unit,integration) & deploy .
Our platform is built with one static HTML/JS interface site served with NGiNX and a few API servers (different applications) ,some of them are exposed and some of them are only accessible from within the farm by the exposed API applications .
I've chosen TeamCity as a CI server as i'm somewhat familiar with it and i've had an excellent experience so far with all of Jetbrain's products.
so far I've defined two build configurations
Development sanity : Checks out from git , runs DB scripts to prepare Database , execute maven goals of clean install (so our testng suite is being executed) , executes code coverage and static code analysis This configuration is executing and is great .
Integration : Checks out from git , runs DB scripts to prepare Database , execute maven goals of clean install (so our testng suite is being executed)
Now I've reached the problematic part , our configuration needs several .war files to be deployed to different machines before our Integration testing can begin , also i would like to build this in such a way that i will be able to add a third configuration that will deploy to live production once the Integration has passed so it basically does the same as the 2nd configuration but add some functions such as taking an application off and put it back online once deployed gracefully, I've seen several approaches on how to do this from maven cargo,shell scripts, fabric etc...
is there a recommended way on how to approach this drawing from your past experiences ? also i'm not clear what is the best way to run Integration testing that involve several applications to be deployed , i've seen many examples of embedded jetty etc.. but that's only good for one application or a very simple configuration when u need 3-4 applications to be deployed before u can start testing , what is the best way to this ? add another project that's dedicated to integration testing and execute another maven goal with a specific profile after the deployment has finished ?
BTW - Deploying to AWS
Thanks Guys .