ci-cd and devops with ruby
TRANSCRIPT
Definition
DevOps is a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality.
I don’t need DevOps there is no risk with my actual
process • On August 1, 2012, Knight Capital had an upgrade failure that ended up costing 440 million US Dollar• On August 20, 2013 Goldman
Sachs had an upgrade failure that, potentially, could cost millions of dollars
DevOps practice• In DevOps, the “Ops” people must be treat like as first-class
citizens from the point of view of requirements• The “Dev” people must be more responsible for relevant
incident• Enforce the deployment process used by all, including dev
and ops• Use Continuous Delivery• Use the “infrastructure as code”
DevOps life cycle processes
Requirements Development Build Testing Deployment Execution
• Operations people as first class stakeholders
• Get the Ops input when developing requirements
• Small Agile team• Limited
Coordination• Unit Testing
• Tools for building• Continuous
Integration
• Automate testing• User Acceptance
Testing
• Continuous Delivery
• Deployments Tools
• Continuous Monitoring
• Responding to error conditions
Continous DeliveryContinuous Delivery (CD) is a set of practices and principles in software engineering aimed at, building, testing, and releasing software, faster and more frequently. These principles help reduce the cost, time and risk of delivering changes, and ultimately value, to customers by allowing for more incremental changes to applications in production.
Continous IntegrationContinuous integration (CI) is the practice, in software engineering, of merging all developer working copies to a shared mainline several times a day. The main aim of CI is to prevent integration problems.In XP, CI was intended to be used in combination with automated unit tests written through the practices of test-driven development. Initially this was conceived of as running all unit tests in the developer's local environment and verifying they all passed before committing to the mainline. This helps avoid one developer's work-in-progress breaking another developer's copy. If necessary, partially complete features can be disabled before committing using feature toggles.
CI/CD and DevOpsAccelerated Time to Market: CD lets an organization deliver the business value inherent in new software releases to customers more quickly.
Building the Right Product: Frequent releases let the application development teams obtain user feedback more quickly. This lets them work on only the useful features.
Improved Productivity and Efficiency: Significant time savings for developers, testers, operations engineers, etc. through automation.
Reliable Releases: The risks associated with a release have significantly decreased, and the release process has become more reliable. Improved Product Quality: The number of open bugs and production incidents has decreased significantly.Improved Customer Satisfaction: A higher level of customer satisfaction is achieved.
Roadmap for DevOps• Improve the transparency across the company• Implement the CI and CD practice• Improve the communication between the Developer and the
Operational• Define some common rule for improve the communication• Change the company culture
Connect Jenkins with Git1. Grant the access to your private Git Repository2. Install the Git and GitHub Plug-in3. Grant access to your Jenkins to your Github instance4. Configure the Hook on Jenkins