Table of Contents

    Continuous Integration Tools

    Criteria to Evaluate CI Tools

    A craftsman who wishes to practice his craft well must sharpen his tools - Chinese Proverb

    Selecting a CI tool is highly dependent on the environment, size, and functionality of the project.

    Evaluate the required tool, based on its:

    • Functionality (Essential and Extendable)
    • Compatibility with your environment (supports current build configuration and existing version control, compiles the code language)
    • Reliability
    • Longevity (choose a tool with a healthy user base and established development group)
    • Usability (easier to configure and use)

    Build Tool: Essential Functionality
    • Code compilation
    • Component packaging
    • Program execution
    • File manipulation

    Build Tool: Extended Functionality
    • Development test execution
    • Integration with Version control tool
    • Document generation
    • Deployment functionality
    • Code quality analysis
    • Extensibility to integrate plugins
    • Multi-platform build support

    Build Scheduler: Essential Functionality
    • Build Execution
    • Version control integration
    • Build tool integration
    • Feedback
    • Build labeling

    Build Scheduler: Extended Functionality
    • Inter-project dependencies
    • User Interface
    • Artifact publication

    Continuous Integration Tools

    Version Control - GitHub, Subversion

    Java Build - Ant, Maven

    .Net Build - NAnt, MSBuild

    Java build scheduler - Jenkins, CruiseControl

    Static code analysis - SonarQube, Checkstyle, PMD

    Code Coverage - JCov, Clover, Serenity, Cobertura

    Unit Testing - NUnit, JUnit

    Functional Testing - Cucumber, Selenium

    Artifact Repository - Nexus, Artifactory

    Continuous Integration Tools
    Figure: Continuous Integration Tools