25
Jan/08
0

Productize Your Build Flow

What if you could type build and run and your project would build and run without any other tricks? Sounds great, but this isn’t always the case.

When you have more than one people working on the project and you share the same code base the build flow should be as simple as possible. If a new coder comes in it should _just_ work for him without any tricks. If your manager want to go in an build and run the current version all he has to do is to is to type build and run. Good rule of thumb : anybody can go and build and run it.

Also consider another case, if your project is for 3 different platforms you might want to have “build [platform]” and “build platforms” – command. That should be enough to build the product for the given platform / platforms.

The ‘build’ command should do it all, build all the neccassery stuff to get the executable behind the scene so that user don’t need to care about it. It also should have debug and release - build options. But to simplify, build a release version as default.

Another thing in simplifying build flow is to make proper release system. When you build a release it should build and test the product as it will be, which means :

  • Delete old directory, or even better create a new one matching the release version. Make sure the product directory is empty!
  • Copy only the needed files for the release, e.g. files that customer will get.
  • Build all in release version, e.g. new libraries, tests, and the product itself.
  • Run tests.
  • Copy the product itself to the release folder if it isn’t already in there.
  • Run the product as default to see whet-ever the new release branch works or not.

Conclusion

Productizing your build flow is important because :

  • If it is simple, everybody can use it.
  • Tests before doing any release.
    • Run the tests every night for both debug and release version!
  • Customer gets only the product files, not the picture of your mother in law.

I don’t see any reason of not doing this even with smaller projects, with bigger projects I’d say this is a must. Nothing is more worse than sending not working product to your customer – this is why you should automate the process.

Post to Twitter

Comments (0) Trackbacks (0)

No comments yet.

Leave a comment

No trackbacks yet.