A Look at My CI/CD Pipeline#
I’ve been setting up a GitOps pipeline using Gitea Actions, Helm, and ArgoCD. It’s a powerful way to manage deployments to Kubernetes.
The process of using Git as the single source of truth for my infrastructure has made my deployments much more reliable and transparent.
flowchart TD DevLabel([π₯οΈ Development]):::devStage CILabel([βοΈ Continuous Integration - CI]):::ciStage CDLabel([π Continuous Deployment - CD]):::cdStage DevLabel --> CILabel --> CDLabel subgraph Dev [ ] A[π Write/Edit Content & Config]:::dev --> B[π hugo server -D for Local Preview]:::dev B --> C[π§ Manage Source Code with Git]:::dev C --> D[π€ Push to hugo-sites repo - Gitea]:::dev end DevLabel --> A subgraph CI [ ] D --> E[βοΈ Trigger: Gitea Actions Workflow]:::ci E --> F[ποΈ Build: Checkout repo & Install Hugo]:::ci F --> G[ποΈ Build Static Site - site-a or site-b]:::ci G --> H[π¦ Package: Docker Build Static Files]:::ci H --> I[π³ Publish: Push Docker Image to Nexus]:::ci I --> J[π Update Manifests: Clone hugo-manifests repo]:::ci J --> K[π Update values.yaml image.tag with Commit Hash]:::ci K --> L[π€ Push Changes to hugo-manifests repo]:::ci end CILabel --> E subgraph CD [ ] L --> M[π ArgoCD Watches hugo-manifests repo]:::cd M --> N[π Synchronization: Detects Updated values.yaml]:::cd N --> O[βΈοΈ Deployment: ArgoCD Applies Helm Charts]:::cd O --> P[π³ Cluster Pulls Docker Image from Nexus]:::cd P --> Q[π Hugo Site Updated in Kubernetes Cluster]:::cd end CDLabel --> M classDef dev fill:#a3e635,stroke:#333,stroke-width:2px,color:#000; classDef ci fill:#60a5fa,stroke:#333,stroke-width:2px,color:#000; classDef cd fill:#c084fc,stroke:#333,stroke-width:2px,color:#000; classDef devStage fill:#65a30d,stroke:#333,stroke-width:3px,color:#fff,font-weight:bold; classDef ciStage fill:#1d4ed8,stroke:#333,stroke-width:3px,color:#fff,font-weight:bold; classDef cdStage fill:#6d28d9,stroke:#333,stroke-width:3px,color:#fff,font-weight:bold;