Skip to content
This repository has been archived by the owner on May 25, 2022. It is now read-only.

Continuous Integration

ctumwebaze edited this page Aug 8, 2014 · 7 revisions

Goals

  • Run tests on pull requests, Merge pull requests only when build is already green
  • Evergreen master (or at least > 99%)
  • No overhead of a core team maintaining servers. The CI should keep running
  • Less queuing

Current CI Pipeline

  • Travis-CI runs on every pull request, and directly marks the pull request as red/green
  • We merge only if the pull request is green
  • Jenkins runs after merging, and handles deployments tasks such as deploying to Dev/Test/UAT, uploading APKs, etc

One-time tasks such as generating an installer, etc are not to be delegated to the CI. Whenever a production release is made, generate the installer and upload it to the Releases folder, and be done with it.

Deployment Process

  1. A pull request is merged into rapidftr master branch
  2. The Docker build is triggered to build a docker image for the application.
  3. When docker is done building the image, it notifies the Jenkins CI using a configured web hook to start running the deployment pipeline
  4. When the CI pipeline runs to completion, it deploys to the configured nodes e.g. https://dev.rapidftr.com