#resource/book Link: https://www.amazon.com/Continuous-Integration-Improving-Addison-Wesley-Signature-ebook/dp/B0026772IS Description: For any software developer who has spent days in “integration hell,” cobbling together myriad software components, **_Continuous Integration: Improving Software Quality and Reducing Risk_** illustrates how to transform integration from a necessary evil into an everyday part of the development process. The key, as the authors show, is to integrate regularly and often using continuous integration (CI) practices and techniques. The authors first examine the concept of CI and its practices from the ground up and then move on to explore other effective processes performed by CI systems, such as database integration, testing, inspection, deployment, and feedback. Through more than forty CI-related practices using application examples in different languages, readers learn that CI leads to more rapid software development, produces deployable software at every step in the development lifecycle, and reduces the time between defect introduction and detection, saving time and lowering costs. With successful implementation of CI, developers reduce risks and repetitive manual processes, and teams receive better project visibility. The book covers - How to make integration a “non-event” on your software development projects - How to reduce the amount of repetitive processes you perform when building your software - Practices and techniques for using CI effectively with your teams - Reducing the risks of late defect discovery, low-quality software, lack of visibility, and lack of deployable software - Assessments of different CI servers and related tools on the market ## Table of Contents - Part I: A background on CI: Principles and Practices - Chapter 1. Getting Started - Build Software at Every Change - Developer - Version Control Repository - CI Server - Build Script - Feedback Mechanism - Integration Build Machine - Features of CI - Source Code Compilation - Database Integration - Testing - Inspection - Deployment - Documentation and Feedback - Summary - Questions - Chapter 2. Introducing [[Continuous Integration]] - A Day in Life of CI - What Is the Value of CI? - Reduce Risks - Reduce Repetitive Processes - Generate Deployable Software - Enable Better Project Visibility - Establish Greater Product Confidence - What Prevents Teams from Using CI? - How Do I Get to "Continuous Integration"? - When and How Should a Project Implement CI? - The Evolution of Integration - How Does CI Complement Other Development - Practices? - How Long Does CI Take to Set Up? - CI and You - Commit Code Frequently - Don't Commit Broken Code - Fix Broken Builds Immediately - Write Automated Developer Tests - All Tests and Inspections Must Pass - Run Private Builds - Avoid Getting Broken Code - Summary - Questions - Chapter 3. Reducing Risks Using CI - Risk: Lack of Deployable Software - Scenario: "It Works on My Machine" - Scenario: Synching with the Database - Scenario: The Missing Click - Risk: Late Discovery of Defects - Scenario: [[Regression Testing]] - Scenario: Test Coverage - Risk: Lack of Project Visibility - Scenario: "Did You Get the Memo?" - Scenario: Inability to Visualize Software - Risk: Low-Quality Software - Scenario: Coding Standard Adherence - Scenario: Architectural Adherence - Scenario: Duplicate Code - Summary - Questions - Chapter 4. Building Software at Every Change - Automate Builds - Perform Single Command Builds - Separate Build Scripts from Your IDE - Centralize Software Assets - Create a Consistent Directory Structure - Fail Builds Fast - Build for Any Environment - Build Types and Mechanisms - Build Types - Build Mechanisms - Triggering Builds - Use a Dedicated Integration Build Machine - Use a CI Server - Run Manual Integration Builds - Run Fast Builds - Gather Build Metrics - Analyze Build Metrics - Choose and Implement Improvements - Stage Builds - Reevaluate - How Will This Work for You? - Summary - Questions - Part II. Creating a Full-Featured CI System - Chapter 5. Continuous Database Integration - Automate Database Integration - Creating Your Database - Manipulating Your Database - Creating a Build Database Orchestration Script - Use a Local Database Sandbox - Use a Version Control Repository to Share - Database Assets - Continuous Database Integration - Give Developers the Capability to Modify the Database - The Team Focuses Together on Fixing Broken Builds - Make the DBA Part of the Development Team - Database Integration and the Integration Button - Testing - Inspection - Deployment - Feedback and Documentation - Summary - Questions - Chapter 6. Continuous Testing - Automate Unit Tests - Automate Component Tests - Automate System Tests - Automate Functional Tests - Categorize Developer Tests - Run Faster Tests First - Unit Tests - Component Tests - System Tests - Write Tests for Defects - Make Component Tests Repeatable - Limit Test Cases to One Assert - Summary - Questions - Chapter 7. Continuous Inspection - What Is the Difference between Inspection and Testing? - How Often Should You Run Inspectors? - Code Metrics: A History - Reduce Code Complexity - Perform Design Reviews Continuously - Maintain Organizational Standards with Code Audits - Reduce Duplicate Code - Using PMD-CPD - Using Simian - Assess Code Coverage - Evaluate Code Quality Continuously - Coverage Frequency - Coverage and Performance - Summary - Questions - Chapter 8. Continuous Deployment - Release Working Software Any Time, Any Place - Label a Repository's Assets - Produce a Clean Environment - Label Each Build - Run All Tests - Create Build Feedback Reports - Possess Capability to Roll Back Release - Summary - Questions - Chapter 9. Continuous Feedback - All the Right Stuff - The Right Information - The Right People - The Right Time - The Right Way - Use Continuous Feedback Mechanisms - E-Mail - SMS (Text Messages) - Ambient Orb and X10 Devices - Windows Taskbar - Sounds - Wide-Screen Monitors - Summary - Questions - Epilogue. The Future of CI - Appendix A. CI Resources - Continuous Integration Web Sites/Articles - CI Tools/Product Resources - Version Control Resources - Database Resources - Testing Resources - Automated Inspection Resources - Deployment Resources - Feedback Resources - Documentation Resources - Appendix B. Evaluating CI Tools - Considerations When Evaluating Tools - Functionality - Compatibility with Your Environment - Reliability - Longevity - Usability - Automated Build Tools - Build Scheduler Tools - Conclusion - Bibliography - Index