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;


