We welcome contributions to eoapi-k8s! All contributions are reviewed and must follow our project guidelines.
Before contributing, please:
- Read
README.md,AGENTS.mdand docs for project structure and coding principles - Check existing issues and pull requests
- Kubernetes cluster (local k3d/k3s or cloud-based)
- Helm 3.x
- kubectl configured for your cluster
- helm-unittest plugin for running unit tests
# Clone the repository
git clone https://github.com/developmentseed/eoapi-k8s.git
cd eoapi-k8s
# Run fast checks (no cluster needed)
./eoapi-cli test schema
./eoapi-cli test lint
./eoapi-cli test unit
# Start local cluster and run integration tests
./eoapi-cli cluster start
./eoapi-cli deployment run
./eoapi-cli test integration --debug
# Cleanup
./eoapi-cli cluster clean./eoapi-cli test all— Run all test suites./eoapi-cli test schema— Validate values.schema.json./eoapi-cli test lint— Run Helm lint./eoapi-cli test unit— Run Helm unit tests./eoapi-cli test integration— Run integration tests (requires cluster)./eoapi-cli deployment debug— Debug failed deploymentshelm unittest charts/eoapi -u— Update test snapshots
See scripts/README.md for the complete CLI reference.
-
Test thoroughly
- Run
./eoapi-cli test allsuccessfully - Test on a real cluster (local k3d or cloud)
- Update test snapshots if you changed templates:
helm unittest charts/eoapi -u
- Run
-
Update documentation
- Add/update relevant documentation in
docs/ - Update
CHANGELOG.mdunder the "Unreleased" section
- Add/update relevant documentation in
-
Follow conventions
- Keep code concise and high quality
- Add unit tests for template changes in
charts/eoapi/tests/ - Add integration tests for feature changes in
tests/integration/
Use Conventional Commits format:
feat:— New featurefix:— Bug fixdocs:— Documentation onlytest:— Adding/updating testsrefactor:— Code refactoringchore:— Maintenance tasks
Examples:
feat: add support for external Redis cachefix: correct pgSTAC migration job orderingdocs: clarify ArgoCD sync wave configuration
Write clear, concise descriptions in your own words:
- What does this PR do?
- Why is this change needed?
- How was it tested?
- Link to related issues:
Fixes #123orRelates to #456
AI tools are part of modern development workflows and contributors may use them. However, all contributions must meet eoapi-k8s quality standards regardless of how they were created.
AI-assisted development is acceptable when used responsibly. Contributors must:
- Test all code thoroughly. Submit only code you have verified works correctly on a real cluster.
- Understand your contributions. You must be able to explain Helm templates, Kubernetes resources, and bash scripts you submit.
- Write clear, concise PR descriptions in your own words.
- Use your own voice in GitHub issues and PR discussions.
- Take responsibility for code quality, correctness, and maintainability.
Disclose AI assistance when substantial template logic or bash scripts were AI-generated, or when uncertain about licensing or copyright implications. Be honest if a reviewer asks about code origins.
Pull requests may be closed without review if they contain:
- Untested code
- Verbose AI-generated descriptions
- Evidence the contributor doesn't understand the submission
- Broken deployments or failing tests
Using AI to assist learning and development is encouraged. Using it to bypass understanding or submit work you cannot explain is not.
This policy is adapted from the GRASS GIS contribution guidelines.
- Questions? Open a discussion
- Found a bug? Open an issue
- Need professional support? Email eoapi@developmentseed.org
Thank you for contributing to eoapi-k8s! 🚀