GitOps source of truth for the Ride-Hailing platform. Part of a 3-repo GitOps architecture.
- ride-hail-platform (Repo 1 - Infrastructure)
- ride-hail-services (Repo 2 - Application Source)
- ride-hail-gitops (Repo 3 - You are here)
βββββββββββββββββββββββ ββββββββββββββββββββββββ βββββββββββββββββββββββ
β ride-hail-platform β β ride-hail-services β β ride-hail-gitops β
β (Repo 1) β β (Repo 2) β β >>> THIS REPO <<< β
β β β β β β
β Vagrant, Ansible, β β Go source code, β β K8s manifests, β
β K8s bootstrap, β β Dockerfiles, β β Helm values, β
β ArgoCD install β β Jenkins & GitLab CI β β ArgoCD App defs β
βββββββββββββββββββββββ ββββββββββββ¬ββββββββββββ ββββββββββββ²βββββββββββ
β git commit image tag β
βββββββββββββββββββββββββββββΊβ
ArgoCD reconciles
All cluster state (infrastructure tools and deployed APIs) flows exclusively through commits to this repository. No kubectl apply or helm install is ever run manually after Day 0.
This system supports two independent Continuous Integration (CI) methods. Both pipelines end by publishing a container image and automatically triggering a deployment via GitOps.
Jenkins Workflow (Legacy/Alternative):
- Code pushed to
ride-hail-services. - Jenkins builds the Docker images and pushes to Docker Hub.
- Jenkins clones
ride-hail-gitops, patches thedevKustomize overlays with the new tag, and pushes back tomain. - ArgoCD detects the new tag and rolls out the deployment.
GitLab CI Workflow (Primary):
- Code pushed to
ride-hail-services. - GitLab CI natively builds, scans (Trivy), and pushes images using Docker-in-Docker.
- The
gitops_update_devjob clonesride-hail-gitops, natively updates thenewTagin Kustomization files, and pushes the commit. - ArgoCD handles the sync.
- Infrastructure: Go to
ride-hail-platformand runvagrant upto provision the VMs and install Kubernetes/ArgoCD. - Bootstrap: The Vagrant provisioning natively executes
kubectl apply -n argocd -f root-app.yaml. - Reconciliation: ArgoCD uses the parameterized Helm "App of Apps" pattern (
platform/argocd/) to resolve and deploy all dependent shared tools and custom apps.
(To migrate origin URLs from GitHub to GitLab, simply update repoURL in root-app.yaml and platform/argocd/values.yaml.)