Continuous Integration and Continuous Delivery (CI/CD)

  1. Continuous Integration Principles and Practices
    1. Core Principles of CI
      1. Maintain Single Source Repository
        1. Centralized Codebase
          1. Access Control and Collaboration
            1. Repository Organization
            2. Automate the Build
              1. Build Scripts
                1. Build Tools
                  1. Build Reproducibility
                  2. Make Build Self-Testing
                    1. Automated Test Suites
                      1. Test Coverage
                        1. Test Quality Gates
                        2. Frequent Commits to Mainline
                          1. Commit Frequency Guidelines
                            1. Avoiding Large Merge Conflicts
                              1. Integration Discipline
                              2. Every Commit Builds on Integration Machine
                                1. Build Servers
                                  1. Automated Triggers
                                    1. Build Isolation
                                    2. Keep Build Fast
                                      1. Optimizing Build Steps
                                        1. Parallelization Techniques
                                          1. Build Performance Monitoring
                                          2. Test in Clone of Production Environment
                                            1. Environment Parity
                                              1. Configuration Management
                                                1. Infrastructure Consistency
                                                2. Make Easy to Get Latest Executable
                                                  1. Build Artifacts
                                                    1. Distribution Methods
                                                      1. Artifact Accessibility
                                                      2. Everyone Can See What's Happening
                                                        1. Build Status Dashboards
                                                          1. Notifications and Alerts
                                                            1. Transparency and Communication
                                                            2. Automate Deployment
                                                              1. Deployment Scripts
                                                                1. Continuous Delivery Integration
                                                                  1. Deployment Consistency
                                                                2. Build Automation
                                                                  1. Build Tools and Languages
                                                                    1. Java Build Tools
                                                                      1. JavaScript Build Tools
                                                                        1. .NET Build Tools
                                                                          1. Python Build Tools
                                                                            1. Go Build Tools
                                                                            2. Build Scripts
                                                                              1. Writing Maintainable Build Scripts
                                                                                1. Build Script Organization
                                                                                  1. Error Handling in Builds
                                                                                  2. Dependency Management
                                                                                    1. Managing External Libraries
                                                                                      1. Dependency Resolution
                                                                                        1. Dependency Caching
                                                                                          1. Security Scanning of Dependencies
                                                                                          2. Build Optimization
                                                                                            1. Incremental Builds
                                                                                              1. Build Caching
                                                                                                1. Parallel Execution
                                                                                                  1. Resource Management