A comprehensive sandbox environment for DevOps automation and GitOps-driven CI/CD pipelines using GitHub Actions, with Kubernetes deployments built and tested inside a DevContainer.
This repository serves as a learning and experimentation platform for modern DevOps practices, including containerized applications, infrastructure-as-code, automated testing, and deployment pipelines.
- CI/CD Automation: GitHub Actions workflows for automated testing, building, and deployment
- Kubernetes Integration: k3d setup scripts for lightweight Kubernetes clusters
- DevContainer Support: Consistent development environment using VS Code DevContainers
- Pre-commit Hooks: Git hooks configured for enforcing conventional commits and code quality
- Docker Image Publishing: Automated container image builds and pushes to registries
- Release Management: Release-please for automated versioning and changelog generation
- Full-Stack Application: Study tracking application with frontend (web) and backend (API) components
.
├── .devcontainer/ # DevContainer configuration for VS Code
├── .github/workflows/ # GitHub Actions CI/CD workflows
├── kubernetes/ # Kubernetes manifests and k3d setup scripts
├── scripts/ # Utility scripts for automation
├── src/ # Application source code
│ ├── backend/ # API backend (Python)
│ └── frontend/ # Web frontend (HTML/CSS/JS)
├── .gitignore # Git ignore rules
├── .pre-commit-config.yaml # Pre-commit hooks configuration
├── mise.toml # Mise (tool versioning) configuration
├── release-please-config.json # Release automation config
└── README.md # This file
- Docker and Docker Compose
- Git
- VS Code (for DevContainer support) or any text editor
- kubectl (for Kubernetes interactions)
-
Clone the repository:
git clone https://github.com/aadil96/devops.git cd devops -
Open the project in VS Code
-
Click "Reopen in Container" when prompted
-
Clone the repository:
git clone https://github.com/aadil96/devops.git cd devops -
Install dependencies using mise:
mise install
-
Install pre-commit hooks:
pre-commit install
- Languages: Python (79.2%), Shell (10.9%), Dockerfile (5.2%), HTML (4.7%)
- Container Orchestration: Kubernetes (k3d)
- CI/CD: GitHub Actions
- Container Runtime: Docker
- Development Tools:
- Pre-commit for git hooks
- Mise for tool versioning
- Release-please for release management
This project includes automated workflows for:
- Linting and code quality checks (Ruff)
- Testing with pytest
- Docker image building and publishing
- Kubernetes deployment and testing
- Automated releases with changelog generation
The repository includes a full-stack study tracking application with:
- Frontend:
study-app-web- Web interface for the study tracking application - Backend:
study-app-api- REST API backend for the application
Both services are containerized and can be deployed using Kubernetes manifests in the kubernetes/ directory.
Current releases are available at Releases.
The project uses Release-please for automatic versioning and changelog generation.
When contributing to this project:
- Follow Conventional Commits for commit messages
- Pre-commit hooks will help enforce these standards
- Ensure all tests pass before submitting a pull request
- Update documentation as needed
This project uses pre-commit hooks to:
- Enforce conventional commit messages
- Run linting checks
- Format code automatically
Hooks are configured in .pre-commit-config.yaml.
To deploy using k3d:
cd kubernetes
./setup.sh # Sets up k3d cluster and applies manifestsSee the kubernetes/ directory for detailed deployment instructions and manifests.
This project is open source. See LICENSE file for details.