Organized developments with Drupal

Whiteboard

As any other geek, I have spent a fair amount of time since I started coding looking for an efficient process when developing websites. After working for about a year leading Raincity Studios’ team in Shanghai, the thing that I most enjoy is the technical side of the development process. The following is a rough idea of how we organize our work for our clients; I have already seen people discussing their own SVN structure or workflow when dealing with Drupal projects, but never did I see a complete overview of their process.

Tools and structure

Client

Nothing new here for anybody with a minimum of experience in Web development, but I’ll still list it:

Server

Repository

This is somehow the part I prefer. We sure use the same tags, trunk and branches directories as everybody else, however we organize the sub-folders in a specific way. If you go into our trunk on a freshly started project you should find the following folders:

Repository's structure

The workflow

So now we have a neat repository, that allows us to keep things organized and maintainable, and the structure to potentially run everything from code revisions, to integration testing and beta release. Let’s sum up the workflow:

Overview of the development process

  1. Development & unit testing: developers run local copies of the project on which they work. They do code changes locally and commit it to the SVN repository when unit tests are passed.
  2. Push to the dev server: once code has been committed, the next cron will push the changes to the dev server. The coders may need to replicate some of the database changes manually (like activating a new module), after what he can ensure his work is working well with the latest version of the project (integration testing).
  3. Push to the beta server: after we released a tag of the project we “push” it on the beta server and double check that everything is running smoothly before giving access to the client. If there is a problem, we still can revert to the previous version.

What else?

There are a couple more things that I find useful:

This covers a small part of the development process, the most technical part of it actually. There are obviously many other things that are needed along a project (ticketing system, documentation platform…): if some you are interested, I may write about it in the future.