Crash course by Juha Mustonen


what, why and how?

What?


  • Wikipedia
    Continuous integration (CI) is the practice, in software engineering, of merging all developer working copies with a shared mainline several times a day. 
  • Me:
    Running repetitive development activities in controlled environment and periodic manner.

What?


  • CI solutions
    • Jenkins (OSS fork from Hudson)
    • Hudson (Maintained by Oracle)
    • Travis CI (OSS solution hosted by Github)
    • Bamboo (Atlassian)
    • TeamCity (JetBrains)

  • Why Jenkins?
    • Popular
    • Versatile (600+ plugins)
    • Active community & development (+LTS)

For What?

  • Testing
    • Unit testing
    • Functional testing
    • Integration testing
    • Performance testing
    • Static analysis
  • Building
    • Packaging (.tgz .wgt .exe .dmg ...)
    • Releasing (tag, package, publish)
    • Publishing (doc, api, package)
  • Deployment
  • And other repetitive or automated tasks...

Why?

... we already have a Grunt ?
#!/bin/shgrunt test build
  • Build: Grunt / Ant / Maven / Bash / Make /...
  • Test: Lint / Karma / Selenium / Sauce Labs /...
  • Release: Gitosis / Github / NPM / ...
  • Deploy: SSH / Fabric / ...


So Why?

  • Environment
    • Clean & controlled
    • Operating systems (Linux, Mac OS X, Windows)
    • Different versions and dependencies (os, version, module, ...)
    • Integrations
    • Long or resource hungry runs
  • Build artefacts (also statistical data)
    • Packages
    • Reports
  • Features
    • Notifications
    • Automated, manual and periodic
    • Integrations (Jenkins comes with API and different clients)

How?


How?

  • Permissions
  • Parameters
  • VCS location
  • Triggers
    • Change in version control, job or resource
    • Periodic, manual or external trigger
  • Pre-build steps
    • Environment
    • Dependencies
  • Build steps
    • Shell commands
  • Post-build step
    • Analyse outcome
    • Publish reports
    • Deploy



Demo


DevOps Day 03 - Git 3.4

By Tarun Sharma

DevOps Day 03 - Git 3.4

  • 861