Continuous Integration and Deployment

Goals for CI

  • Test everything continuously
  • Automated Versioning
  • Automated Notifications Dev, Team, PM
  • Pre-Evaluate Pull Requests
  • Visual Regression Testing
  • Keep Dependencies up to date automatically
  • Decreases Review Time in general

Think about your current project!

Goals for CD

  • Automated Versioning
  • Saving a lot of manual pain / labour
  • Automated Release work / packaging
  • Have staging and production system
  • Allows for QA people to eval the staging system
  • Put Release Version into app and VCS

Think about your current project!

CircleCI

Integration

  1. Add GH project to CI
  2. Push some code
    1. See if it works automagically
    2. Try to configure it in the UI
    3. or add circle.yml to project
  3. Create slack chat notification

CircleCI

Continuous Deployment

Easy: deploy on heroku

Intermediate: deploy via own script (e.g. uberspace) or via capistrano

Advanced: deploy to amazon ec2 or google apps

A word about versioning

Does your app expose an API?

Semantic Versioning

Else?

Simple build numbers

git describe --first-parent

or just auto-tag the commit that is #live-on-staging or #live-on-production

Is your app shipped/deployed manually?

Semantic Release

for node

https://github.com/semantic-release/semantic-release

 🌴

CI

By Moritz C. Türck