7. I am a contributor to Jenkins core, and maintainer of a number of Jenkins plugins, including the git plugin and the Throttle Concurrent Builds plugin.
8. I'm a member of the Jenkins interim governance board.
14. Habit #1: Use plugins productively Search for plugins to fit your needs. Plugins available are listed in the update center and at https://wiki.jenkins-ci.org/display/JENKINS/Plugins
18. Habit #1: Use plugins productively, continued Plugins you should be using: JobConfigHistory See the difference between job configurations now and then.
23. Habit #1: Use plugins productively, continued Plugins you should be using, continued: Disk Usage How much space is that job taking up on the slave? How large ar the archived artifacts for that build? Find the answers easily. Build Timeout Hanging tests a problem? Set a timeout – the build will be aborted if it takes longer.
25. Habit #1: Use plugins productively, continued Plugins you should be using, continued: Email-ext Better control of when emails get sent and who they get sent to.
26. Format the emails the way you want, using information from your builds. Parameterized Trigger Kick off downstream builds with information from upstream – i.e., tell a system test where to find the packages it needs to install, etc.
29. Habit #2: Standardize your slaves If you've got more than a couple builds, you've probably got multiple slaves.
30. Ad hoc slaves may be convenient, but if your slaves have different environments, you're in for trouble eventually.
31. If you have multiple slaves playing the same role, they should be as identical as you can make them.
32. Habit #2: Standardize your slaves, continued Puppet, Chef, etc Sysadmins are used to these tools already.
33. Configuring your build slaves is the same as configuring any other puppet/chef/etc-managed machine. Have Jenkins or your job install your tools Jenkins tool installation for Maven, Ant, JDK, etc.
35. May not be possible for all tools – e.g., RPM/Debian packages.
36. Habit #2: Standardize your slaves, continued Cloud or VMs Spin up your slaves from a pre-configured image.
37. When you need to change your slave configurations, update the image and spin up new slaves, rather than updating the existing slaves. Whatever method you choose, just make sure your slaves are consistent!
44. Why use incremental builds? If your build takes 4-8 hours to run end-to-end, you can't do real continuous integration on every change.
45. If you're integrating with code review or otherwise using pre-tested commit processes, you want to verify changes as fast as possible.
46. Habit #3: Use incremental builds, continued Incremental builds are complementary to full builds, not replacements.
47. Don't do QA/deployments of incremental builds – use full, clean builds for that. e.g., incremental build whenever a change is detected, full build once a day. Either use multiple jobs (one for incremental, one for full) or configure one job to behave differently, depending on parameters.
48. Habit #3: Use incremental builds, continued Maven project type has built-in support for incremental builds. Look in Advanced Options in the Maven configuration section.
49. When enabled, checks the changelist for the build and compares to Maven module layout.
50. Any modules containing changed files are built. As are modules depending on changed modules, and any modules with failures in the previous build.
51. Habit #3: Use incremental builds, continued Incremental builds may not be possible in all cases.
52. Freestyle projects would require custom work to determine what needs to be run for incremental builds. e.g., use code coverage data to determine what tests need to be run when a given source file is changed.
58. Habit #4: Integrate with other tools, continued JIRA and other bug trackers Update bug tracker when a fix gets built, automatically. Sonar Code metrics, code coverage, unit test results, etc, all in one place.
79. When the last of 6 phases fails due to network problems or the like, just re-run that phase without having to run the whole pipeline again. Much faster!
84. Update center makes it easy to upgrade core and plugins to the latest at any time, but that's not always the smart move.
85. Habit #6: Stick with stable releases, continued Use Jenkins core LTS releases. LTS – Long Term Support, similar to Ubuntu.
86. Every ~3 months, a particularly stable release is chosen, a branch is created from it and the new branch is rigorously tested.
87. Backports of critical fixes are made to this branch and new releases (e.g., 1.409.1, 1.409.2, etc) are made.
88. Habit #6: Stick with stable releases, continued Use Jenkins core LTS releases, continued. Plugin developers are encouraged to build against the latest LTS release, helping keep new plugin releases compatible.
89. If you don't have a specific reason to be on the bleeding edge, you should probably be running an LTS release.
91. Habit #6: Stick with stable releases, continued Upgrade plugins carefully.
92. Check plugin wiki pages for changelog. In the update center, click the link for the plugin name – that will take you to the wiki page. If you don't need a bugfix or new feature, you probably don't need to upgrade.