Automating Continuous Deployment flow with Jenkins
Jenkins is based on plugins. Almost every feature is a plugin. If we need to use Git, there is a plugin for it. If we want to use Active Directory for authentication, there is a plugin. You get the point. Almost everything is a plugin. Moreover, most plugins were created and are maintained by the community. When we are in doubt how to accomplish something, the plugins directory (https://wiki.jenkins-ci.org/display/JENKINS/Plugins) is usually the first place we start looking.
With more than 1200
 plugins available, it's no wonder that, given such a huge variety, most users are compelled to use a plugin for almost any type of task. Jenkins old-timers would create a Freestyle job that, for example, clones the code and builds the binaries. It would be followed by another job that would run unit tests, another for running functional tests, and so on. All those Freestyle jobs would be connected. When the first is finished, it would invoke the second...