Duration: 2 Days
Course Overview
One of the biggest blockages to rapid reliable delivery of change in software products has traditionally been the QA, infrastructure provisioning, deployment, configuration and operation of system upgrades and installations. The development and low level functional testing has largely been solved by agile development. New candidate builds then suffer from severe slow-down caused by the list of phases given above, often implemented using traditional waterfall style silos.
Continuous integration and continuous delivery use a combination of test automation with build, provisioning, deployment and operational automation to make it possible to whip a new release out to production after full testing within hours rather than months.
This course looks at the tools, principles and best practices used in setting up and running a CI/CD pipeline within an agile or DevOps software delivery life cycle. It focuses on how to optimise the pipeline and how to instil best practices for its use and maintenance.
The course is presented as a combination of taught material (50%), with small group activities, and hands-on use of software tools as part of a simulated development project (50%). The tools used in the case study are Git, Jenkins (a variant of Bamboo) and various Jenkins plug-ins. However, these tools are merely representative of the vast number of similar tools on the market today.
How can I attend my course?
Course Content
CI/CD concepts
• Defining Continuous Delivery and Continuous Integration
• Architecting pipelines for CI/CD
• Continuous delivery in agile and DevOps workflows
• The role of the SQA engineer in CI/CD implementation
People and culture
• The importance of team and organisational culture in the success of CI/CD
• Improving and maintaining a good culture
Designing the CI/CD environment
• Key design principles
• CI/CD best practices
• Enabling technologies
Version control
• Purpose of version control
• Parallel development, single source of truth
• Merges and conflict resolution
• Branching and stashing
• Distributed VC stores: Git
• Pulling and pushing changesets
• The role of test automation in conflict resolution
Continuous integration
• Automating the builds – Jenkins and Git webhooks
• Integrating automated tests into the builds
• Code quality analysis and other pipeline tools
• CI best practices and benefits
Continuous Test
• Benefits of CT
• Five tenets and best practices of CT
Continuous Delivery and Deployment
• Comparing delivery and deployment
• Packaging build outputs, configuration, binary artefacts, and scripts
• Infrastructure as code
• CD best practices
• Incorporating security into CD: DevSecOps
• Security automation and best practices
Enabling technologies
• Virtualisation, virtual machines
• Cloud technologies: IaaS, PaaS, SaaS
• Containerisation: Docker and the Union Filesystem
• Docker, Docker Hub and Kubernetes
• IaC technologies: Puppet, Chef, Ansible