Skip to content

CI/CD Pipeline with GitHub Actions

This guide explains how CI runs in GitHub Actions and how CD flows through ArgoCD and the docs image build.

These workflows live in .github/workflows/:

  • ci.yaml runs pre-commit, kubeconform validation, a docs build check, and pushes the docs image on changes under docs/.
  • cluster-smoke.yaml is a manual and scheduled workflow that connects to the tailnet and runs kubectl get nodes and kubectl get pods -A.

Add these repository secrets for the tailnet-enabled workflow:

  • TS_OAUTH_CLIENT_ID
  • TS_OAUTH_SECRET
  • KUBECONFIG_B64

KUBECONFIG_B64 should be a base64-encoded kubeconfig that can reach the cluster API on the tailnet.

CI validation focuses on the Kubernetes and GitOps manifests in this repo.

AreaCoverageWorkflow
apps/YAML lint, schema validation (excluding app.yaml)ci.yaml
infrastructure/YAML lint, schema validationci.yaml
bootstrap/YAML lint, schema validationci.yaml
docs/Docusaurus build and image pushci.yaml

Run the workflow manually when you want to validate the live cluster health over Tailscale.

  • Workflow: Cluster Smoke in GitHub Actions
  • Checks: kubectl get nodes, kubectl get pods -A, and ArgoCD app status

The workflow also runs every six hours via a scheduled trigger.

ArgoCD watches this repo and applies changes via ApplicationSets. GitHub Actions validates and builds artifacts, while ArgoCD handles the deployment and reconciliation in-cluster.