The developer are the ones who build thing that run by themselves (which they should be proud of, they are makers). But they often forget about automatizing the build process. Some people like to do the same task over and over, if these people happen to be developers, they should be fired. Frequently following the same tasks to reach a goal is something that a computer can do, that’s what they were invented for. And if you spend time doing it, you should be fired.

Continuous integration is a key point of accelerating and improving the stability of any software development. And it quickly improves the confidence you have in your releases, and your products.

You can guess this: It has to do with Scrum methodology and its 2 weeks sprints, the lean six sigma theories and stuff like. Which should be everyone’s obsession.

They are few rules that we should always respect:

  • Frequent and/or boring tasks must be executed automatically : Building, testing, code documentation generation, packaging, deploying are one of them.
  • Project must be build without any developer intervention : It must be as simple as get it & compile it.
  • Project must be installed and run without any developer intervention : Any demonstration must feel like a breeze
  • We should always report the exact version that is currently being run : Any firmware, program, library must be able to return its version and have a version that is always unique (thus automatically generated).
  • You need to keep tracks of your builds : When you realize you messed up badly with the last version, you will be quite happy to be able to get the previous one in no time. The stable one (whatever that might means in your company), the one automatically build by your SCM and the one you work on.
  • Unit testing is costly : But you should try to add one for each bug you encounter in production.
  • Automatically report errors that the user might encounter : Final users (or testers) must be able to report there errors easily. And every error must be investigated. You CAN’T accept to miss one.

Some choices will make your life easier. Choosing python or java (without native libraries dependencies) will simplify the development processes a lot, it just works everywhere as long as you respect the JRE. Choosing a package management based Linux system (apt-get, yum, etc.) will also make your deployment a lot easier.

The psychological impact of continuous integration (associated with SCRUM methodology) is very important. Final users can have what they ask for more quickly (it’s rewarding), developer can see the result of their work more quickly and can focus their time on high value tasks (it’s rewarding), managers can provide results faster. QA people can work on packaged products and see the fixes and improvement much more faster.

Does it applies to me? Because I use…

It supports shell scripts, so sure it does. You should also look at the jenkins plugins list, you a lot of plugins including for iOS and Android development.