In this presentation we will see how to create a CI pipeline for Puppet code that automates testing and deployment of Puppet code using Puppet Enterprise and GitLab CI. We will cover, with theoretical and live demonstration: - How to automate configuration of Puppet Code Manager and GitLab for Puppet code deployments - How to design a CI pipeline which involves different steps that cover: -- Syntax checks on Puppet manifests, yaml files, templates, Puppetfile... -- Lint checks on Puppet code -- Rspec-puppet based unit tests on modules and the whole control repo -- Catalog diff checks relevant to the nodes affected by the change -- Integration tests based on Vagrant Vms -- Gradual Rollout of Puppet code from canary nodes to all the production