-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Overview
Currently, our GitHub release workflow builds release images for Linux, macOS, and Windows, but users must manually download and install the appropriate binaries. To improve the user experience and simplify deployment, we should integrate packaging and publishing to popular package managers as part of our automated release process.
Goals
- Chocolatey (Windows): Automatically publish to Chocolatey package repository for Windows users
- Homebrew (macOS/Linux): Create and maintain a Homebrew formula for easy installation on macOS and Linux
- Automated Publishing: Integrate packaging and publishing into existing GitHub release workflow
- Version Synchronization: Ensure package versions automatically match GitHub release versions
Scope
Chocolatey Integration
- Create Chocolatey package specification (
dotnetapidiff.nuspec) - Set up Chocolatey API key as GitHub secret
- Add Chocolatey publishing step to release workflow
- Test package installation and upgrade scenarios
- Document Chocolatey installation process
Homebrew Integration
- Create Homebrew formula for
dotnetapidiff - Set up automated formula updates on new releases
- Consider creating a custom tap vs. submitting to homebrew-core
- Test formula on both macOS and Linux
- Document Homebrew installation process
GitHub Workflow Updates
- Modify existing release workflow (
.github/workflows/release.yml) - Add conditional packaging steps based on release tags
- Implement proper error handling and rollback strategies
- Add package verification steps
- Update workflow documentation
Implementation Considerations
Chocolatey Package Structure
dotnetapidiff/
├── tools/
│ ├── chocolateyinstall.ps1
│ ├── chocolateyuninstall.ps1
│ └── dotnetapidiff.exe
└── dotnetapidiff.nuspec
Homebrew Formula Requirements
- Download URLs pointing to GitHub release tarballs
- SHA256 checksums for verification
- Proper dependency declarations (if any)
- Installation instructions for binary placement
Workflow Considerations
- Secrets Management: Safely store API keys for package repositories
- Release Tagging: Trigger packaging only on proper semantic version tags
- Multi-platform Testing: Verify packages work across target platforms
- Rollback Strategy: Handle failed package publications gracefully
User Benefits
After implementation, users will be able to install DotNetApiDiff easily:
Windows (Chocolatey):
choco install dotnetapidiffmacOS (Homebrew):
brew install dotnetapidiffLinux (Homebrew):
brew install dotnetapidiffRelated Work
This complements the manual installation script issue (#[to be created]) by providing package manager integration for users who prefer managed installations with automatic updates.
Acceptance Criteria
- Chocolatey package is automatically published on each GitHub release
- Homebrew formula is automatically updated on each GitHub release
- Package versions match GitHub release versions
- Installation instructions are updated in README.md
- Both packages are tested and verified to work correctly
- Workflow includes proper error handling and logging
- Documentation covers package manager installation methods
Priority
Medium-High - This significantly improves user experience and adoption by providing standard package manager installation methods.