Thank you for your interest in contributing to SoloOps! We welcome contributions from the community.
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.
Before creating a bug report:
- Check the issue tracker to see if the problem has already been reported
- If you're unable to find an open issue addressing the problem, open a new one
When creating a bug report, include:
- A clear and descriptive title
- Steps to reproduce the problem
- Expected behavior
- Actual behavior
- Your environment (OS, Go version, etc.)
- Any relevant logs or error messages
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, include:
- A clear and descriptive title
- A detailed description of the proposed functionality
- Examples of how the feature would be used
- Why this enhancement would be useful to most SoloOps users
-
Fork the repository and create your branch from
main:git checkout -b feature/my-new-feature
-
Make your changes:
- Write clear, commented code
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
-
Test your changes:
make test make lint -
Commit your changes:
- Use clear and meaningful commit messages
- Follow the Conventional Commits specification
- Example:
feat: add support for GCP Cloud Run
-
Push to your fork and submit a pull request:
git push origin feature/my-new-feature
-
Wait for review:
- Maintainers will review your PR
- Address any feedback or requested changes
- Once approved, your PR will be merged
- Keep PRs focused on a single feature or bug fix
- Include tests for new functionality
- Update documentation for user-facing changes
- Ensure all tests pass and code is linted
- Add a clear description of what the PR does
- Reference any related issues
- Go 1.21 or later
- Make
- Git
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/soloops-cli.git cd soloops-cli -
Add upstream remote:
git remote add upstream https://github.com/soloops/soloops-cli.git
-
Install dependencies:
make deps
-
Build the project:
make build
-
Run tests:
make test
-
Stay in sync with upstream:
git fetch upstream git rebase upstream/main
-
Create a feature branch:
git checkout -b feature/my-feature
-
Make changes and test:
# Make your changes make test make lint
-
Commit and push:
git add . git commit -m "feat: description of changes" git push origin feature/my-feature
- Follow standard Go conventions
- Use
gofmtfor formatting (runmake format) - Use meaningful variable and function names
- Add comments for exported functions and types
- Keep functions small and focused
- Write unit tests for new functionality
- Ensure tests are deterministic and isolated
- Use table-driven tests where appropriate
- Mock external dependencies
- Aim for high test coverage (>80%)
# Run all tests
make test
# Run tests with coverage
make test-coverage
# Run specific test
go test -v -run TestConfigValidate ./tests- Update README.md for user-facing changes
- Add inline comments for complex code
- Update command help text if adding/modifying commands
- Add examples for new features
soloops-cli/
├── cmd/soloops/ # CLI entry point
├── pkg/
│ ├── cli/ # CLI commands
│ ├── config/ # Configuration parsing
│ ├── generator/ # Terraform generation
│ └── utils/ # Utility functions
├── infra-templates/ # Blueprint templates
├── tests/ # Test files
├── .github/workflows/ # CI/CD workflows
└── docs/ # Documentation
- Create template files in
infra-templates/ - Add blueprint type to
pkg/config/config.go - Implement generation logic in
pkg/generator/ - Add tests in
tests/ - Update documentation
- Create command file in
pkg/cli/ - Register command in
pkg/cli/root.go - Implement command logic
- Add tests
- Update README with command documentation
Releases are managed by maintainers. The process includes:
- Update version in relevant files
- Update CHANGELOG.md
- Create and push a git tag
- GitHub Actions automatically builds and publishes binaries
- Join our Discussions
- Ask questions in issues
- Reach out to maintainers
Contributors will be recognized in:
- The project README
- Release notes
- The GitHub contributors page
Thank you for contributing to SoloOps!