LDP uses GitHub Actions for continuous integration testing across all supported platforms.
Main integration testing workflow for the platform.
Triggers: Push to main, Pull requests, Manual dispatch
Jobs:
- Terraform Validation - Format, init, validate across all environments
- Python Linting & Testing - Flake8, black, pylint, pytest
- Shell Script Validation - ShellCheck for bash scripts
- YAML Validation - yamllint for Kubernetes manifests
- Docker Build Tests - Build all service images (Airflow, Spark, Jupyter)
- Documentation Check - Validate README and docs
- Security Scan - Trivy vulnerability scanner, TruffleHog secrets detection
- Project Structure - Verify required directories and files
- Cluster Integration Test - Full E2E deployment on Minikube
- Deploy infrastructure with Terraform (20min timeout)
- Initialize MinIO buckets
- Upload test data
- Verify all pods running
- Test complete data pipeline
Runner: ubuntu-latest
Cross-platform compatibility testing.
Triggers: Push to main, Pull requests, Manual dispatch
Jobs:
- Runner:
windows-latest - PowerShell script syntax validation
- Terraform validation on Windows
- Python linting
- Prerequisite checking
- Runner:
macos-latest - Bash script syntax validation
- Platform detection testing
- Terraform validation on macOS
- Python linting and syntax checks
- Runner:
ubuntu-latest - Bash script syntax validation
- Platform detection testing
- Terraform validation on Linux
- Python linting and unit tests
- Full dependency installation
- Runner:
ubuntu-latest - Depends on: linux-integration-tests
- Timeout: 15 minutes
- Full Minikube deployment
- Platform health verification
- Automatic cleanup
- Runner:
ubuntu-latest - Platform guide existence
- Internal link checking
- Markdown structure validation
- Aggregates all test results
- Provides unified pass/fail status
Script Validation:
- ✅ Bash scripts (Linux, macOS)
- ✅ PowerShell scripts (Windows)
- ✅ ShellCheck for bash
- ✅ Syntax validation
Infrastructure:
- ✅ Terraform format, init, validate (all platforms)
- ✅ Kubernetes manifests (YAML)
- ✅ Docker image builds
- ✅ Helm chart validation
Code Quality:
- ✅ Python linting (flake8)
- ✅ Python formatting (black)
- ✅ Python complexity (pylint)
- ✅ Python unit tests (pytest)
Security:
- ✅ Vulnerability scanning (Trivy)
- ✅ Secret detection (TruffleHog)
End-to-End:
- ✅ Full platform deployment
- ✅ Service health checks
- ✅ Data pipeline testing
- ✅ MinIO operations
- PowerShell script syntax
- Terraform compatibility
- Python tooling
- Bash script syntax
- Platform detection
- Homebrew compatibility
- Apple Silicon support
- Bash script syntax
- Full E2E deployment
- Minikube integration
- Complete data pipeline
# Install dependencies
pip install pytest pylint flake8 black
# Run linting
flake8 airflow/ spark/ tests/ examples/ \
--count --select=E9,F63,F7,F82 --show-source --statistics
# Run unit tests
pytest airflow/tests/ -v
pytest spark/tests/ -vcd terraform
# Format check
terraform fmt -check -recursive
# Validate
terraform init -backend=false
terraform validate# Bash syntax check
bash -n scripts/setup.sh
# ShellCheck
shellcheck scripts/*.sh# Install yamllint
pip install yamllint
# Lint Kubernetes manifests
yamllint kubernetes/
# Lint workflows
yamllint .github/workflows/timeout-minutes: 20 # For deploymentcpus: 2
memory: 4096
kubernetes-version: 1.34.0python-version: '3.13'- Check
terraform fmtoutput - Verify
local.tfvarsexists - Ensure all modules are valid
- Check
.flake8configuration - Fix syntax errors (E9 codes)
- Resolve undefined names (F821)
- Check pod status in logs
- Verify Minikube started correctly
- Review Terraform apply logs
- Windows: Check PowerShell syntax
- macOS: Verify bash compatibility
- Linux: Check script permissions
- Run tests locally before pushing
- Check CI status before merging
- Review failed logs in GitHub Actions
- Keep scripts portable across platforms
- Use standard Python (no platform-specific imports)
- Document platform-specific behavior
Add to your PR description:
[](https://github.com/gridatek/ldp/actions/workflows/ci.yml)
[](https://github.com/gridatek/ldp/actions/workflows/platform-tests.yml)When adding new code:
- ✅ Add appropriate tests
- ✅ Ensure cross-platform compatibility
- ✅ Update CI if adding new platforms
- ✅ Document platform-specific requirements