class: center, middle # Continuous Integration --- ## Continuous Integration ###Aims to improve the quality of software ###and reduce the amount of effort needed to deliver it --- ## How do we do that? ###By applying quality control and integration testing early and often ###Instead of doing those after ALL the development has been done --- ## Communication and Integration -- * Is all about code and human communication/coordination -- * What was built -- * Did it pass tests -- * When was it deployed -- * Get feedback from client -- * What version can we roll back to if something blows up --- ## Important Software Dev Goals -- * Keep build time <= 10 minutes (per project) -- * Simple deployment to different environments -- * Quick feedback -- * Stable code base -- * Short releases -- * Improve quality -- * Reduce risk -- * Automated Tests! --- ## Continuous D Words -- ###Continuous
Deployment
-- ##VS -- ###Continuous
Delivery
--- ## Continuous
Deployment
-- * Is the ability to automatically deploy software to different environments -- * All stages happen automatically, all the way through staging and production --- ## Continuous
Delivery
-- * One step back from Continuous *Deployment* -- * With every merge into `master` we
deliver
an artifact that
can
be deployed -- * More steps have to be done to actually deploy te artifact -- * Every “check-in” is ready to/could be released to production -- --- ## Jenkins * Open source software that is used for Continuous Integration -- * Is installed on a server and used by ops/dev/qa -- * Will clone your repo, build, test, package, lint, deliver, deploy... --
--- ## Jenkins Terminology -- * Project - Example: Airwaze Compile project that will build your code -- * Workspace - The directory where files for a project are stored. Usually a cloned repo. -- * Plugins - Projects used plugins: git, junit, aws (there are plugins for everything) -- * View - Simply a configurable list of projects (useful if you have lots of projects) -- * Build History - List of previous project builds and the results from them -- * Downstream Projects - Happen after this project * Upstream Projects - Happen before this project