Map every stage of the infinity loop to real tools. Understand the choices, install your core toolkit, and write your first shell script — your DevOps environment is ready by the end of this session.
| Stage | 🐙 GitHub Stack | 🦊 GitLab Stack | ☁️ Azure Stack |
|---|---|---|---|
| Plan | GitHub Issues / Projects | GitLab Issues / Milestones | Azure Boards |
| Code | GitHub Repos | GitLab Repos | Azure Repos |
| CI/CD | GitHub Actions | GitLab CI (.gitlab-ci.yml) | Azure Pipelines |
| Container Reg | GHCR (GitHub Container Registry) | GitLab Container Registry | ACR (Azure Container Registry) |
| Deploy | GitHub Actions + kubectl | GitLab CI + Helm / ArgoCD | Azure Pipelines + AKS |
| IaC | Terraform (any cloud) | Terraform + GitLab Terraform state | Terraform + ARM / Bicep |
| Monitor | Datadog / Grafana Cloud | Prometheus + Grafana (built-in) | Azure Monitor + App Insights |
| Best For | Open-source teams, SaaS startups, cloud-native | All-in-one, self-hosted, security-focused enterprise | Microsoft shops, Azure-first orgs, hybrid cloud |
Install your DevOps toolkit — Git, Docker, VS Code, Node.js — and verify every tool is working
# === Verify toolkit === git --version # Expected: git version 2.x.x docker --version # Expected: Docker version 24.x.x (or higher) docker run hello-world # Expected: "Hello from Docker!" node --version # Expected: v20.x.x or v22.x.x npm --version # Expected: 10.x.x code --version # Expected: VS Code version number # === Configure Git identity (do once) === git config --global user.name "Your Full Name" git config --global user.email "you@example.com" git config --global core.editor "code --wait" git config --global init.defaultBranch main # Verify config git config --list
# === Create your course lab repo === mkdir devops-35days-labs cd devops-35days-labs git init # Create README echo "# DevOps 35-Day Labs" > README.md echo "My course lab repository" >> README.md git add README.md git commit -m "feat: initial lab repo setup" # Push to GitHub (create repo first at github.com) git remote add origin \ https://github.com/YOUR_USERNAME/devops-35days-labs.git git branch -M main git push -u origin main echo "✅ Lab repo ready!"
# Pull and run an nginx web server
docker run -d -p 8080:80 --name my-web nginx:alpine
# Check it's running
docker ps
# Open in browser: http://localhost:8080
# You should see: "Welcome to nginx!"
# See what's inside the container
docker exec -it my-web sh
ls /etc/nginx/
exit
# See the logs
docker logs my-web
# Stop and remove
docker stop my-web
docker rm my-web
# Pull a Node.js image and run it interactively
docker run -it node:20-alpine sh
node -e "console.log('Hello from a container!')"
exit
3 questions · 5 minutes · Instant feedback
docker run -d -p 8080:80 nginx:alpine and visit localhost:8080| Stage | Primary Tool | Alternatives | This Course? |
|---|---|---|---|
| Plan | Jira | GitHub Projects, Linear, Trello | GitHub Projects ✓ |
| Code | Git + GitHub | GitLab, Bitbucket, Azure Repos | GitHub ✓ |
| Build | npm / Docker | Maven, Gradle, Buildpacks | npm + Docker ✓ |
| Test | Jest | JUnit, Pytest, Playwright | Jest + Trivy ✓ |
| Release | GitHub Actions | Jenkins, GitLab CI, Azure Pipelines | GH Actions + Jenkins ✓ |
| Deploy | Kubernetes + Helm | ECS, Nomad, Fly.io | K8s + Helm + ArgoCD ✓ |
| Operate | Terraform | Pulumi, CDK, ARM Templates | Terraform + Ansible ✓ |
| Monitor | Prometheus + Grafana | Datadog, New Relic, Dynatrace | Prometheus + Grafana ✓ |
# Install Homebrew first (if not installed) /bin/bash -c "$(curl -fsSL \ https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Install all tools at once brew install git node brew install --cask docker visual-studio-code # Install VS Code extensions via CLI code --install-extension eamodio.gitlens code --install-extension ms-azuretools.vscode-docker code --install-extension redhat.vscode-yaml code --install-extension esbenp.prettier-vscode # Verify everything git --version && docker --version && node --version && code --version
# Install Git winget install Git.Git # Install Docker Desktop winget install Docker.DockerDesktop # Install VS Code winget install Microsoft.VisualStudioCode # Install Node.js LTS winget install OpenJS.NodeJS.LTS # After restart, open VS Code and install extensions: # GitLens · Docker · YAML · Prettier # Verify git --version docker --version node --version
wsl --install. Restart. All remaining labs use Linux bash commands.