Skip to content

Latest commit

 

History

History
140 lines (93 loc) · 3.98 KB

File metadata and controls

140 lines (93 loc) · 3.98 KB

Contributing to quartzctl

Thank you for your interest in contributing to quartzctl! We welcome contributions from the community and are committed to maintaining a safe, inclusive, and high-quality open source project.

This guide outlines how to contribute effectively, responsibly, and in alignment with CNCF and OpenSSF best practices.


🧑‍💻 How to Contribute

We welcome:

  • New features
  • Bug fixes
  • Documentation improvements
  • CI/CD and security enhancements
  • Test coverage and performance optimizations

Please start by searching for existing issues. If none exist, feel free to open one to discuss your idea before submitting a PR.


🧭 Development Environment Setup

  1. Fork and clone the repository:

    git clone https://github.com/YOUR_USERNAME/quartzctl.git
    cd quartzctl
  2. Install dependencies:

    go mod tidy
  3. Install taskfile:

    sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d
  4. Build the CLI:

    task build
  5. Run tests:

    task test
  6. Run linter (required):

    task lint

🧪 Pull Request (PR) Process

  • Fork the repo and create a new branch from main.
  • Write clear, atomic commits. Use conventional commit messages (see below).
  • Test locally and ensure the code lints and passes all tests.
  • Include tests for new functionality.
  • Update documentation if applicable.
  • Open a pull request against the main branch.

PR Checklist

Before submitting a PR, ensure that:

  • Code compiles without errors.
  • Unit/integration tests cover the changes.
  • go fmt, go vet, and golangci-lint run show no issues.
  • All existing and new tests pass.
  • Documentation is updated, if necessary.
  • PR description clearly explains what the change does and why.

✍️ Commit Message Guidelines

We follow the Conventional Commits specification:

<type>(optional scope): <description>

Common types:

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation-only changes
  • style: Changes that do not affect meaning (white-space, formatting)
  • refactor: Code change that neither fixes a bug nor adds a feature
  • test: Adding missing tests or correcting existing tests
  • chore: Changes to build process or auxiliary tools

Examples:

  • feat(config): add support for multiple environments
  • fix(apply): prevent crash when terraform is missing
  • docs: update usage examples in README.md

PRs that do not follow this format may be asked to rebase before being merged.


🔐 Security

If you discover a security vulnerability, please do not open a public issue. Instead, follow the responsible disclosure process defined in our SECURITY.md.


✅ Code of Conduct

This project follows the CNCF Code of Conduct. By participating, you agree to uphold this standard.


📦 Licensing and DCO

All contributions are subject to the terms of the Apache 2.0 License. By submitting a pull request, you certify that:

  • You have the right to submit the code or documentation.
  • You release your contributions under the project license.

We follow the Developer Certificate of Origin (DCO). Please ensure your commits are signed with --signoff:

git commit -s -m "feat: add new stage validation logic"

🙏 Thank You!

Your contributions help make quartzctl better for everyone. We value your input and look forward to your ideas, improvements, and suggestions.

For questions or to get involved in deeper discussions, please join or open an issue.