my blog

my blogprojectsnode-js-ci-cd-pipeline-with-jenkins-argocd-elk-stack

$ kubectl describe project node-js-ci-cd-pipeline-with-jenkins-argocd-elk-stack

Node.js CI/CD Pipeline with Jenkins, ArgoCD & ELK Stack

Built a production-style Product Catalog REST API using Node.js and Express, deployed to Kubernetes with a full 8-stage Jenkins CI/CD pipeline and GitOps workflow.

CI Pipeline (Jenkins):

  • npm install inside node:20-alpine Docker container
  • Jest tests with mongodb-memory-server (node:20 Debian)
  • Docker image built and pushed to Docker Hub with Git SHA tag
  • Helm values.yaml updated with new image tag
  • Git commit triggers ArgoCD sync
  • Jenkins polls ArgoCD API and confirms pod is Healthy before marking build green

CD & Deployment:

  • ArgoCD watches GitHub repo and auto-deploys on every merge to master
  • App deployed to K3s cluster via Helm chart with multi-environment values files
  • MongoDB running as separate K8s pod, connected by service name

Observability:

  • OpenTelemetry SDK instruments Express and HTTP automatically
  • Traces exported to OTel Collector → Jaeger
  • Winston JSON logs shipped via Filebeat → Elasticsearch → Kibana
  • Every log line includes traceId for Kibana ↔ Jaeger correlation

Real bugs fixed during the project:

  • mongodb-memory-server fails on Alpine — switched to node:20 Debian with MONGOMS_VERSION=7.0.14
  • Groovy parser crashes on bash ${VAR#prefix} syntax — fixed with sed at runtime
  • Jenkins when { branch ‘master’ } always skips in regular Pipeline jobs — fixed with GIT_BRANCH expression
  • OTel MongoDB instrumentation conflicts with mongoose bundled driver — disabled selectively