We welcome contributions! This document provides guidelines for contributing to this project.
Please be respectful and constructive. We are committed to providing a welcoming and inclusive experience for everyone.
- Fork the repository
- Clone your fork locally
- Create a feature branch from
master - Make your changes
- Test your changes
- Submit a pull request
- Terraform >= 1.10.0
- pre-commit
- TFLint
- terraform-docs
# Install pre-commit hooks
pre-commit install
# Run all pre-commit checks
pre-commit run -a
# Format code
terraform fmt -recursive
# Validate module
terraform init -backend=false
terraform validateWe use Conventional Commits. All commit messages and PR titles must follow this format:
type: description
Allowed types: fix, feat, docs, ci, chore, test, refactor, style, perf, build, revert
Examples:
feat: add support for custom tagsfix: correct subnet CIDR calculationdocs: update usage examplesci: pin workflow actions to SHA
- Code follows the existing style and conventions
- Updated or added examples in
examples/directory - Ran
pre-commit run -alocally - Updated documentation if needed
- All CI checks pass
- Clear description of what changed and why
- Link to any related issues
- Example usage if adding new features
- Test evidence (terraform validate output, plan output)
module/
├── main.tf # Primary resources
├── variables.tf # Input variables
├── outputs.tf # Output values
├── versions.tf # Provider and Terraform version constraints
├── locals.tf # Local values (if needed)
├── data.tf # Data sources (if needed)
├── examples/ # Usage examples
│ ├── basic/ # Minimal working example
│ └── complete/ # Full-featured example
├── README.md # Documentation (auto-generated)
├── README.yaml # Documentation source
└── CHANGELOG.md # Version history
We follow Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features (backwards compatible)
- PATCH: Bug fixes (backwards compatible)
Open an issue or reach out at support@clouddrove.com.