A peer-to-peer learning platform for local communities in Uganda, built on Village Health Teams (VHT) networks and Women Groups with automated CI/CD infrastructure using GitHub Actions and Terraform.aform
# VHT Community Learning Platform - CI/CD Pipeline
A peer-to-peer learning platform for local communities in Uganda, built on Village Health Teams (VHT) networks and Women Groups with automated CI/CD infrastructure using GitHub Actions and Terraform.
**Author:** Charles Herbert Matovu
**Created:** 2025
## π Project Overview
This repository contains the Infrastructure as Code (IaC) configuration for the VHT Community Learning Platform. The project aims to:
- Provide accessible peer-to-peer learning resources
- Support Village Health Teams (VHT) networks
- Empower Women Groups in Uganda
- Deploy and manage cloud infrastructure automatically
- Ensure consistent, reproducible deployments
## ποΈ Architecture
```
βββ main.tf # Core infrastructure resources
βββ variables.tf # Input variables and validations
βββ outputs.tf # Output values
βββ backend.tf # Terraform backend configuration
βββ terraform.tfvars.example # Example variable values
βββ .github/
β βββ workflows/
β βββ terraform-plan.yml # PR validation workflow
β βββ terraform-apply.yml # Production deployment workflow
β βββ terraform-validate.yml # Code quality checks
βββ README.md
```
## π Quick Start
### Prerequisites
- **Terraform** >= 1.0
- **Google Cloud Platform** (GCP) account with a project
- **GitHub** repository with this code
- **gcloud CLI** installed and authenticated
### Local Setup
1. **Clone the repository:**
```bash
git clone
github.com
cd cicd-terraform
```
2. **Create GCP Service Account:**
```bash
gcloud iam service-accounts create terraform-sa \
--display-name="Terraform Service Account"
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
--member="serviceAccount:terraform-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/storage.admin"
```
3. **Setup Workload Identity Federation (GitHub):**
```bash
gcloud iam service-accounts add-iam-policy-binding \
terr β¦