DevOps & Cloud · Intermediate

GitOps Deploy Pipeline

Containerize an app and ship it on every git push with a CI pipeline that builds, scans, and auto-deploys to Kubernetes.

Intermediate8-14 hoursYAMLGo

You build a complete GitOps loop: a small Go HTTP service is containerized with Docker, pushed to a registry, and deployed to a local Kubernetes cluster (k3s or Kind) entirely through GitHub Actions and Argo CD. Every merge to main triggers a CI job that builds the image, scans it for CVEs with Trivy, updates a Helm values file with the new image tag, and lets Argo CD sync the cluster to match. The project covers the full path from developer laptop to a running pod, making the deployment process auditable, repeatable, and entirely git-driven.

What you build

  • GitHub Actions workflow triggers on push to main, builds a Docker image, and pushes it to GitHub Container Registry
  • Trivy scans the image for critical CVEs and fails the pipeline before any deployment if vulnerabilities are found
  • Helm chart manages Kubernetes manifests for the Go service, including Deployment, Service, and HorizontalPodAutoscaler
  • Argo CD watches the git repo and automatically syncs the cluster when the Helm values file is updated with a new image tag
  • A local k3s or Kind cluster runs the full stack on a single machine with no cloud account required
  • Pipeline status badges and Argo CD sync status give immediate visibility into the health of each deploy

What it teaches

  • Writing multi-stage GitHub Actions workflows with job dependencies and secrets management
  • Building minimal, CVE-scanned container images and understanding image layer hygiene
  • Structuring a Helm chart with parameterized values for multiple environments
  • The GitOps reconciliation model and how Argo CD detects and applies drift between git state and cluster state
  • Kubernetes Deployment rollout mechanics, health checks, and readiness probes
  • Securing a pipeline with image signing, vulnerability gates, and least-privilege service accounts

How it works

  1. 1

    Git Push

    • Developer pushes to main branch
  2. 2

    GitHub Actions CI

    • Build Docker image
    • Scan with Trivy (fail on critical CVEs)
    • Push image to ghcr.io
    • Commit new image tag to values.yaml
  3. 3

    Argo CD Sync

    • Detects values.yaml change in git
    • Applies updated Helm chart to cluster
  4. 4

    Kubernetes Rollout

    • New pod starts with updated image
    • Readiness probe passes
    • Old pod terminated
fig. 01 — git push triggers the ci/cd pipeline and argo cd syncs the cluster

Sign in to open the build guide

Free account. Get the step-by-step build and every resource link.

Sign in to continue

Take it further

  • Add a staging environment Helm values file and a separate Argo CD Application so changes go through staging before a manual promotion to production
  • Integrate Cosign to sign the container image in CI and verify the signature in an admission webhook before Kubernetes allows the image to run
  • Add a rollback job that re-tags the previous image and commits it if a post-deploy smoke test fails

More like this

All projects