Skip to content
This repository has been archived by the owner on Mar 12, 2024. It is now read-only.

V1.0 alpha1 Design

Alexander Matyushentsev edited this page Dec 21, 2017 · 1 revision

Argo CI V1.0-alpha1 Design

Argo CI V1.0-alpha1 implements bare minimum which is required to automatically run CI workflow on each push/pull request. Following features are included:

Following features are not part of first version:

  • workflow history maintaining. Currently Argo UI is used as is and showing only active and recently completed workflows.
  • multiple source control systems integration. Only Github is supported, but design allows to quickly add more source control systems.
  • private repositories. Private repositories support is possible but not yet implemented.
  • Installer. It is planned to implement Helm chart to install Argo CI but currently, installation is manual.

Design

Argo CI consists of single web service which is responsible for both webhook handling as well as launching CI workflows. Following actions are executed on each Github event:

design

  1. webhook handler receives the payload from Github and extract event metadata such as repository name and commit sha;
  2. Argo CI downloads content of .argo-ci directory from event repo. Content is downloaded using git sparse checkout. Sparse checkout allows downloading only .argo-ci directory without downloading the whole repository. Repository stays cached so subsequent events from the same repo requires only to run git fetch.
  3. Argo CI loads CI workflow from .argo-ci/ci.yaml, populate repo and revision workflow parameters (if present in workflow), set onExit handler and creates CI workflow by using Kubernetes CRD API.
  4. Kubernetes and Argo workflow controller executes workflow
  5. Workflow exit handler updates commit status in Github
Clone this wiki locally