This repository has been archived by the owner on Mar 12, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 27
V1.0 alpha1 Design
Alexander Matyushentsev edited this page Dec 21, 2017
·
1 revision
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:
- GitHub webhook handler
- Integration with Github commit status
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.
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:
- webhook handler receives the payload from Github and extract event metadata such as repository name and commit sha;
- 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 rungit fetch
. - Argo CI loads CI workflow from
.argo-ci/ci.yaml
, populaterepo
andrevision
workflow parameters (if present in workflow), set onExit handler and creates CI workflow by using Kubernetes CRD API. - Kubernetes and Argo workflow controller executes workflow
- Workflow exit handler updates commit status in Github