Thank you for considering contributing to this project! We welcome contributions from the community.
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.
- Use the GitHub issue tracker
- Check if the bug has already been reported
- Include:
- Terraform version
- AWS provider version
- Minimal reproduction steps
- Expected vs actual behavior
- Relevant log output (redact sensitive information)
- Open an issue with the
enhancementlabel - Describe the use case and benefits
- Consider if it fits the project's scope
- Be open to discussion and feedback
Fork the repo and create your branch from main. Make your changes following the existing code style, and add documentation or examples if you're introducing new features.
Before submitting, test everything:
terraform init
terraform validate
terraform planFormat your code and update docs:
terraform fmt -recursive
terraform-docs markdown table . --output-file README.md --output-mode injectAdd comments for anything complex. Write clear commit messages and reference issues when relevant (like "Fixes #123").
When you open the PR, explain what changed and why. Link any related issues and tag maintainers for review.
- Terraform >= 1.0
- AWS CLI configured with credentials
- terraform-docs for documentation
- pre-commit (optional but recommended)
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/terraform-buildkite-elastic-ci-stack-for-aws.git cd terraform-buildkite-elastic-ci-stack-for-aws -
Create a test configuration:
cd examples/basic cp terraform.tfvars.example terraform.tfvars # Edit terraform.tfvars with your values
-
Test the module:
terraform init terraform plan terraform apply # Only if you want to actually create resources terraform destroy # Clean up when done
Stick to 2 spaces for indentation and follow the Terraform Style Guide. Run terraform fmt -recursive before you commit. Try to keep lines under 120 characters, and add comments when you're doing something non-obvious.
Every variable needs a description. If it's complex, add examples to help people understand what goes there. Before opening a PR, regenerate the README:
terraform-docs markdown table . --output-file README.md.
├── *.tf # Main Terraform configuration files
├── scripts/ # User data scripts
├── examples/ # Usage examples
│ ├── basic/ # Minimal configuration
│ ├── spot-instances/ # Cost-optimized setup
│ ├── existing-vpc/ # Deploy into existing VPC
│ └── scheduled-scaling/ # Time-based scaling
├── .github/ # GitHub templates and workflows
└── README.md # Generated documentation
Releases are managed by maintainers. The process includes:
- Version bump in relevant files
- Update CHANGELOG.md
- Create GitHub release with notes
- Tag the release (semantic versioning)
- Open a GitHub Issue
- Check the Buildkite Documentation
By contributing, you agree that your contributions will be licensed under the MIT License.