Legend - Not Done - In Progress - Pending Review - Done Go Design Documentation 1. Introduction 2. Concepts in Go 2.1 Domain 2.2 Implementation 3. Getting Started 3.1 Setting up your development environment 3.2 How to go about making changes to the codebase 3.3 How to add a configuration migration 3.4 How to add a database migration 4. Technology Stack 4.1 Plugins Architecture - OSGi 4.2 Object Relation Mapping (ORM) - Hibernate & IBatis 4.2.1 Hibernate 4.2.2 IBatis 4.3 Caching - EhCache 4.4 Dependency Injection (DI) - Spring 4.5 Model View Controller (MVC) 4.5.1 Models - Java 4.5.2 Controllers - Servlets & Rails 4.5.3 Views - Rails & Velocity 4.6 User Interface (UI) - jQuery & Prototype, SCSS, HTML 4.7 Build Tool - Buildr 5. Architecture of Go 5.1 Overview 5.2 Go Server 5.2.1 Configuration Management 5.2.1.1 XSD & XML 5.2.1.2 Schema Migration 5.2.1.3 Config Repository 5.2.1.4 Config Merge 5.2.1.5 Config Diff 5.2.2 Database Management 5.2.2.1 Schema 5.2.2.2 Migration - DBDeploy 5.2.2.3 Backup 5.2.3 Material Update Sub System 5.2.3.1 Material Fingerprint & Flyweights 5.2.3.2 Supported Materials 5.2.4 Build Cause Production 5.2.5 Pipeline Scheduling 5.2.6 Work Assignment 5.2.6.1 Resource & Environment Mapping 5.2.7 Artifact Management 5.2.8 User Management 5.2.8.1 Authentication Management 5.2.8.2 Enable, disable & delete users 5.2.8.3 User Role Management 5.2.9 Agent Management 5.2.10 UI Architecture 5.2.10.1 Markup : HTML 5.2.10.2 Styling: CSS, SASS 5.2.10.3 Scripting : JavaScript, jQuery and Prototype 5.2.11 APIs, CCTray & Feeds 5.3 Go Agent 5.3.1 Overview 5.3.2 Bootstrapper 5.3.3 Launcher 5.3.4 Agent 5.4 Common 5.4.1 Plugin Architecture 5.4.2 Agent - Server Communication 5.5 Build Infrastructure 5.5.1 Build, Test, Package 5.5.1.1 Maven modules 5.5.1.2 Documentation Creation 5.5.1.3 Pom conventions 5.5.1.4 Jar Packaging 5.5.1.5 TLB integration 5.5.2 Installer Creation 5.5.2.1 Zip 5.5.2.2 RPM 5.5.2.3 Debian 5.5.2.4 Windows 5.5.2.5 Mac OS X 5.5.2.6 Solaris 6. Features 6.1 Dashboard 6.1.1 Personalise 6.1.2 Search 6.1.3 Pipeline Group(s) 6.1.4 Pipeline(s) and Ordering of pipeline instances 6.1.5 Active Pipelines 6.2 Fan-in 6.2.1 Overview 6.2.2 Pipeline Timeline 6.2.3 Algorithm 6.2.4 Corner Cases 6.2.5 Extensions 6.3 Value Stream Map 6.3.1 Overview 6.3.2 Layer Assignment 6.3.3 Dummy Node Creation 6.3.4 Edge Cross Minimisation 6.3.5 Corner Cases 6.3.6 Extensions 6.4 Compare Pipeline 6.4.1 Overview 6.4.2 Implementation 6.4.3 Corner cases 6.5 PackageRepository 6.5.1 Overview 6.5.2 Capturing Configuration 6.5.3 Retrieving Package Revisions 6.6 Command Repository 6.7 Environments 6.8 Templates 6.9 Shine 6.9.1 Test Artifact Parser 6.9.2 Reporting 6.9.3 Stage Graph 6.10 OAuth Gadgets 6.11 Backup 7. CD in practice 7.1 Build Go Using Go 7.2 Test Infrastructure 7.2.1 Rails specs using RSpec 7.2.2 Java testing using JUnit 7.2.3 Javascript testing using JsUnit Tests 7.2.4 Acceptance & Regression tests using Twist 7.2.5 Performance Tests 7.2.6 Test Parallelization 7.3 Continuous Deployment 8. Miscellaneous 8.1 Technical Debt