This guide walks you through setting up a CI/CD pipeline using Jenkins, Docker, Minikube, kubectl, and Argo CD in a Windows + WSL (Ubuntu) hybrid environment.
Ensure the following are installed on your system:
- Windows 10/11
- Windows Subsystem for Linux (WSL)
- Ubuntu (via WSL)
- Docker Desktop for Windows
- Minikube installed on Windows
- kubectl installed on Windows
- All tools should be accessible from your localhost
Run inside Ubuntu WSL:
sudo apt update
sudo apt install git -yAlthough Docker Desktop runs on Windows, Jenkins runs in WSL, so Docker CLI must also be available in WSL:
Install Docker inside WSL: π https://docs.docker.com/engine/install/ubuntu/
After installation, allow docker to access sudo:
sudo groupadd docker
sudo usermod -aG docker $USEREnsure Docker works in WSL:
docker psRun in Ubuntu WSL:
sudo apt install openjdk-21-jre-headless -yFollow the Jenkins installation guide: π https://www.jenkins.io/doc/book/installing/linux/#debianubuntu
After installation:
sudo systemctl start jenkins
sudo systemctl enable jenkinsAfter installation, allow Jenkins to access Docker:
sudo usermod -aG docker jenkins
sudo systemctl restart jenkinsAccess Jenkins via:
http://localhost:8080
After accessing Jenkins UI, install the following plugins:
- Git Plugin
- Pipeline Plugin
- Docker Pipeline Plugin
In Jenkins Dashboard:
-
Navigate to:
Manage Jenkins > Credentials -
Add:
- DockerHub credentials (username/password)
- GitHub credentials (username/password or SSH key)
Example:
| ID | Type | Purpose |
|---|---|---|
dockerhub-creds |
Username/Password | Push Docker images |
git-https-creds |
Username/Password | GitOps repo automation |
πΈ Example Screenshot:

Follow guide: π https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
β οΈ Make surekubectlis accessible globally (e.g., added to PATH).
Minikube runs on Windows (not WSL). Download and install: π https://minikube.sigs.k8s.io/docs/start/
Start minikube:
minikube start --driver=dockerFollow Argo CD setup: π https://argo-cd.readthedocs.io/en/stable/getting_started/
After installation, retrieve the admin password:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -dLogin via browser:
kubectl port-forward svc/argocd-server -n argocd 9090:443
http://localhost:9090
- Jenkins runs inside WSL (Ubuntu)
- Docker, Minikube, and Kubernetes tools run on Windows
- All components communicate via localhost
You are now ready to run full CI/CD pipelines with Docker builds, GitOps deployments, and Kubernetes!