The most powerful tool we have as developers is automation. -Scott Hanselman
We already have all the commands required for a fully automated Continuous Deployment flow. Now we need a tool that will monitor changes in our code repository and trigger those commands every time a commit is detected.
There is a plethora of CI/CD tools on the market. We'll choose Jenkins. That does not mean that it is the only choice nor that it is the best one for all use cases. I won't compare different tools nor provide more details behind the decision to use Jenkins. That would require a chapter on its own or even a whole book. Instead, we'll start by discussing Jenkins architecture.