Jenkins best practices are mostly applicable to other Ci tools:
* Jenkins security. Use authorization and access control for Jenkins users. By default, Jenkins does not perform any security check, which means anyone can access Jenkins to configure Jenkins, modify jobs, and execute build. This may be acceptable for internal use within the enterprise, but there are high security risks. For example, if someone else deletes the job by mistake and misconfigures your job to run every minute, too many builds are started. Therefore, plugin is generally used to add authorization and access control for Jenkins.
* Regularly backs up Jenkins's home directory.
* Use file fingerprinting to manage dependencies. When your job on Jenkins depends on other jobs, you can use file fingerprinting to help locate the dependent version information.
* The most reliable build is clean builds. Clean builds indicates that all 3rd parties, build scripts, and release notes related to build must be controlled in source code.
* Close integration with the issue tracking system, such as Jira or Bugzilla, never reduces changes to the change log.
* Close integration with the repository browser tool, for example, fisheye if you use subversion as the source code management tool.
* Always configure the job to generate trend reports and automated tests when you run a Java build. The trend report helps the project manager and developers quickly understand the progress and status of the current project.
* Make sure that the home directory of Jenkins has enough space.
* Before deleting an unused job, archive it.
* Create different jobs for different branchs and build them to detect errors as soon as possible.
* Allocate different ports to the parallel project builds to avoid conflicts when multiple jobs are started at the same time.
* Create an email aliais for developers of different projects so that all project-related personnel can immediately understand the project status.
* Add additional steps to detect failures as soon as possible. For example, Log check and micro-test.
* You can use a job to automatically perform regular maintenance tasks, such as disk cleanup.
* After the build is successfulCodeTag, label, or baseline.
* Configure Jenkins bootstrapper to update the working directory before build.
From: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Best+Practices