mirror of
https://github.com/beshu-tech/deltaglider.git
synced 2026-04-22 16:28:31 +02:00
Initial commit: DeltaGlider - S3-compatible storage with 99.9% compression
- Drop-in replacement for AWS S3 CLI (cp, ls, rm, sync commands) - Binary delta compression using xdelta3 - Hexagonal architecture with clean separation of concerns - Achieves 99.9% compression for versioned files - Full test suite with 100% passing tests - Python 3.11+ support
This commit is contained in:
122
PYPI_RELEASE.md
Normal file
122
PYPI_RELEASE.md
Normal file
@@ -0,0 +1,122 @@
|
||||
# Publishing DeltaGlider to PyPI
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. Create PyPI account at https://pypi.org
|
||||
2. Create API token at https://pypi.org/manage/account/token/
|
||||
3. Install build tools:
|
||||
```bash
|
||||
pip install build twine
|
||||
```
|
||||
|
||||
## Build the Package
|
||||
|
||||
```bash
|
||||
# Clean previous builds
|
||||
rm -rf dist/ build/ *.egg-info/
|
||||
|
||||
# Build source distribution and wheel
|
||||
python -m build
|
||||
|
||||
# This creates:
|
||||
# - dist/deltaglider-0.1.0.tar.gz (source distribution)
|
||||
# - dist/deltaglider-0.1.0-py3-none-any.whl (wheel)
|
||||
```
|
||||
|
||||
## Test with TestPyPI (Optional but Recommended)
|
||||
|
||||
1. Upload to TestPyPI:
|
||||
```bash
|
||||
python -m twine upload --repository testpypi dist/*
|
||||
```
|
||||
|
||||
2. Test installation:
|
||||
```bash
|
||||
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ deltaglider
|
||||
```
|
||||
|
||||
## Upload to PyPI
|
||||
|
||||
```bash
|
||||
# Upload to PyPI
|
||||
python -m twine upload dist/*
|
||||
|
||||
# You'll be prompted for:
|
||||
# - username: __token__
|
||||
# - password: <your-pypi-api-token>
|
||||
```
|
||||
|
||||
## Verify Installation
|
||||
|
||||
```bash
|
||||
# Install from PyPI
|
||||
pip install deltaglider
|
||||
|
||||
# Test it works
|
||||
deltaglider --help
|
||||
```
|
||||
|
||||
## GitHub Release
|
||||
|
||||
After PyPI release, create a GitHub release:
|
||||
|
||||
```bash
|
||||
git tag -a v0.1.0 -m "Release version 0.1.0"
|
||||
git push origin v0.1.0
|
||||
```
|
||||
|
||||
Then create a release on GitHub:
|
||||
1. Go to https://github.com/beshu-tech/deltaglider/releases
|
||||
2. Click "Create a new release"
|
||||
3. Select the tag v0.1.0
|
||||
4. Add release notes from CHANGELOG
|
||||
5. Attach the wheel and source distribution from dist/
|
||||
6. Publish release
|
||||
|
||||
## Version Bumping
|
||||
|
||||
For next release:
|
||||
1. Update version in `pyproject.toml`
|
||||
2. Update CHANGELOG
|
||||
3. Commit changes
|
||||
4. Follow steps above
|
||||
|
||||
## Automated Release (GitHub Actions)
|
||||
|
||||
Consider adding `.github/workflows/publish.yml`:
|
||||
|
||||
```yaml
|
||||
name: Publish to PyPI
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.11'
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install build twine
|
||||
- name: Build package
|
||||
run: python -m build
|
||||
- name: Publish to PyPI
|
||||
env:
|
||||
TWINE_USERNAME: __token__
|
||||
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||
run: |
|
||||
twine upload dist/*
|
||||
```
|
||||
|
||||
## Marketing After Release
|
||||
|
||||
1. **Hacker News**: Post with compelling title focusing on the 99.9% compression
|
||||
2. **Reddit**: r/Python, r/devops, r/aws
|
||||
3. **Twitter/X**: Tag AWS, Python, and DevOps influencers
|
||||
4. **Dev.to / Medium**: Write technical article about the architecture
|
||||
5. **PyPI Description**: Ensure it's compelling and includes the case study link
|
||||
Reference in New Issue
Block a user