Thank you for your interest in contributing to dsops!
# Enter development shell (has Go, tools, provider CLIs)
nix develop --impure
# Or use direnv for automatic activation
echo "use flake --impure" > .envrc && direnv allow
# Build and test
make build
make test- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Run tests:
make test - Run linter:
make lint - Commit with conventional commit format (see below)
- Push and open a Pull Request
This project uses Conventional Commits for automated versioning and changelog generation.
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
| Type | Description | Version Bump |
|---|---|---|
feat |
New feature | Minor (0.x.0) |
fix |
Bug fix | Patch (0.0.x) |
perf |
Performance improvement | Patch |
refactor |
Code refactoring | None |
docs |
Documentation only | None |
test |
Adding/updating tests | None |
ci |
CI/CD changes | None |
chore |
Maintenance tasks | None |
# Feature (triggers minor version bump)
git commit -m "feat(providers): add Azure Key Vault support"
# Bug fix (triggers patch version bump)
git commit -m "fix(resolve): handle empty secret values correctly"
# Breaking change (triggers major version bump when v1.0+)
git commit -m "feat(config)!: rename 'providers' to 'secretStores'" \
-m "BREAKING CHANGE: The 'providers' key in dsops.yaml is now 'secretStores'."Releases are automated via release-please.
- Merge PRs to main with conventional commit messages
- release-please creates a Release PR that:
- Bumps version based on commits
- Updates CHANGELOG.md
- Updates version in code
- Merge the Release PR to:
- Create a git tag (e.g.,
v0.2.4) - Trigger GoReleaser workflow
- Publish binaries to GitHub Releases
- Push Docker image to ghcr.io
- Update Homebrew formula
- Create a git tag (e.g.,
- GitHub Releases: Pre-built binaries for macOS (arm64, amd64), Linux (arm64, amd64), Windows (amd64)
- Docker:
ghcr.io/systmms/dsops:<version>andghcr.io/systmms/dsops:latest - Homebrew:
brew install systmms/tap/dsops - Go:
go install github.com/systmms/dsops/cmd/dsops@latest
If you need to trigger a release manually:
# Create and push a version tag
git tag v0.3.0
git push origin v0.3.0The release workflow will automatically:
- Run tests
- Build binaries for all platforms
- Create GitHub Release with changelog
- Push Docker images
- Update Homebrew tap
- Follow Go best practices
- Run
make lintbefore committing - Add tests for new functionality
- Keep commits focused and atomic
Open an issue or discussion on GitHub.