At IDM, we use a lot of tools for software development. I want to show here how the high-level ones fit together:
The tools are separated in three categories:
What's next in this architecture:
The tools are separated in three categories:- in green, tools which are directly used by developers
- in blue, more server-side tools which are part of the development environment
- in red, production tools.
- We use SpringSource Tool Suite as the IDE. It is a rebranded version of Eclipse with m2eclipse (a plugin to work with Maven) and other plugins. The Subclipse plugin is used as the SVN client.
- Source code is commited in the SVN repository.
- A continuous integration server (Hudson) regularly checks out modifications from SVN and builds the software. Emails are sent in case of build or test failures.
- Hudson appends build details to Mantis issues when an issue ID is contained in the commit message.
- When a Web application is built by Hudson, it is then deployed on a dedicated server running Tomcat. Application tests are then ran against this web-application using SeleniumHQ.
- The developer gets immediate build feedback thanks to Hudson Tray Tracker.
- When the software is ready for production, a developer uses the Maven Release plugin to perform a release. This release is stored in the Maven repository (powered by Nexus) with a clean version number, and a tag is associated in SVN.
- Administrators deploy release versions on production servers by taking archives in Nexus. Thanks to the version number and the associated SVN tag, a developer can debug the exact production version of the application.
What's next in this architecture:
- Automated deployment of snapshots Maven artefacts (Java only): each time Hudson builds an artefact which is in a snapshot version, it should be automatically deployed to Nexus. This would allow simpler development for other users of this dependency.
- Introduction of a code review tool: there are some parts of the software we work on which are critical, especially the domain part. Checking SVN commits need to be more integrated in the development process than simply looking at SVN emails. We are currently evaluating tools such as Review Board.