| |
| |
Foreword | |
| |
| |
| |
Foreword | |
| |
| |
| |
Preface | |
| |
| |
About the Authors | |
| |
| |
About the Contributors | |
| |
| |
| |
A Background on CI: Principles and Practices | |
| |
| |
| |
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 | |
| |
| |
| |
Introducing Continuous Integration | |
| |
| |
A Day in the 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 | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
Creating a Full-Featured CI System | |
| |
| |
| |
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 Integrate Button | |
| |
| |
Testing | |
| |
| |
Inspection | |
| |
| |
Deployment | |
| |
| |
Feedback and Documentation | |
| |
| |
Summary | |
| |
| |
Questions | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
CI Resources | |
| |
| |
Continuous Integration Web Sites/Articles | |
| |
| |
CI Tools/Product Resources | |
| |
| |
Build Scripting Resources | |
| |
| |
Version Control Resources | |
| |
| |
Database Resources | |
| |
| |
Testing Resources | |
| |
| |
Automated Inspection Resources | |
| |
| |
Deployment Resources | |
| |
| |
Feedback Resources | |
| |
| |
Documentation Resources | |
| |
| |
| |
Evaluating CI Tools | |
| |
| |
Considerations When Evaluating Tools | |
| |
| |
Functionality | |
| |
| |
Compatibility with Your Environment | |
| |
| |
Reliability | |
| |
| |
Longevity | |
| |
| |
Usability | |
| |
| |
Automated Build Tools | |
| |
| |
Build Scheduler Tools | |
| |
| |
Conclusion | |
| |
| |
Bibliography | |
| |
| |
Index | |