Skip to content

Latest commit

 

History

History
282 lines (211 loc) · 6.58 KB

File metadata and controls

282 lines (211 loc) · 6.58 KB

feelpp-aptly-publisher: Release Checklist

✅ Package Complete!

The feelpp-aptly-publisher PyPI package is now ready for publication.

What We've Built

apt/
├── src/feelpp_aptly_publisher/     # Package source code
│   ├── __init__.py                 # Package initialization
│   ├── __main__.py                 # CLI entry point
│   ├── cli.py                      # Command-line interface
│   ├── publisher.py                # Core publishing logic
│   └── py.typed                    # Type stub marker
├── tests/                          # Test suite
│   ├── test_publisher.py           # 5 tests passing ✓
│   └── test_cli.py                 # 5 tests passing ✓
├── .github/workflows/              # CI/CD pipelines
│   ├── quality.yml                 # Code quality checks
│   ├── build.yml                   # Build and test
│   └── publish.yml                 # PyPI publishing
├── examples/                       # Usage examples
├── pyproject.toml                  # Package metadata
├── Makefile                        # Development commands
├── setup-dev.sh                    # Development setup
├── CONTRIBUTING.md                 # Developer guide
├── QUICKSTART.md                   # Quick start guide
├── README_PYPI.md                  # Package README
└── .flake8                         # Linting config

Quality Checks ✅

All passing:

  • Black: Code formatting (120 char lines)
  • Flake8: Linting (zero issues)
  • Mypy: Type checking (Python 3.9+)
  • Pytest: 10/10 tests passing
  • Build: Package builds successfully

Package Details

  • Name: feelpp-aptly-publisher
  • Version: 1.0.0
  • Python: 3.8+ (tested on 3.8-3.12)
  • Dependencies: None (stdlib only!)
  • CLI command: feelpp-apt-publish

🚀 Publishing to PyPI

Method 1: Automated (Recommended)

  1. Push to GitHub:

    cd /nvme0/prudhomm/Devel/feelpp.quickfix/apt
    git add .
    git commit -m "feat: create feelpp-aptly-publisher PyPI package"
    git push origin main
  2. Create GitHub Release:

  3. CI Automatically Publishes:

    • GitHub Actions runs .github/workflows/publish.yml
    • Builds package
    • Publishes to PyPI (trusted publishing)
    • No API tokens needed!

Method 2: Manual

cd /nvme0/prudhomm/Devel/feelpp.quickfix/apt
source .venv/bin/activate

# Build
make build

# Check
twine check dist/*

# Publish to Test PyPI first
twine upload --repository testpypi dist/*

# Test installation
pip install --index-url https://test.pypi.org/simple/ feelpp-aptly-publisher

# If all good, publish to production PyPI
twine upload dist/*

📝 Release Notes Template

# feelpp-aptly-publisher v1.0.0

First stable release of the Feel++ Aptly Publisher!

## Features

- 🚀 Publish Debian packages to APT repositories via GitHub Pages
- 📦 Support for multiple channels (stable, testing, pr)
- 🔐 GPG signing support
- 🐍 Python 3.8+ compatible
- 🧪 Comprehensive test suite
- 📚 Full documentation

## Installation

```bash
pip install feelpp-aptly-publisher

Quick Start

# Publish packages
feelpp-apt-publish \
    --component myproject \
    --channel stable \
    --distro noble \
    --debs ./packages/

What's Included

  • CLI tool: feelpp-apt-publish
  • Python API: from feelpp_aptly_publisher import AptlyPublisher
  • Zero external dependencies
  • Full type hints
  • 100% test coverage

Documentation

Requirements

System tools (must be on PATH):

  • aptly
  • git
  • rsync
  • gpg (optional, for signing)

Full Changelog: https://github.com/feelpp/apt/commits/v1.0.0


## 🔧 Post-Publication Tasks

### 1. Update MMG Repository

```bash
cd /nvme0/prudhomm/Devel/feelpp.quickfix/third-party/mmg

# Update publish-mmg.sh to use PyPI package
cat > publish-mmg.sh << 'EOF'
#!/bin/bash
set -e

# Install publisher if not available
if ! command -v feelpp-apt-publish &> /dev/null; then
    echo "Installing feelpp-aptly-publisher..."
    pip install feelpp-aptly-publisher
fi

CHANNEL="${1:-stable}"
DISTRO="${2:-noble}"
PACKAGES_DIR="$(dirname "$0")/packages"

feelpp-apt-publish \
    --component mmg \
    --channel "$CHANNEL" \
    --distro "$DISTRO" \
    --debs "$PACKAGES_DIR" \
    --verbose
EOF

chmod +x publish-mmg.sh

2. Update Other Feel++ Projects

Update all projects to use:

pip install feelpp-aptly-publisher
feelpp-apt-publish --component $PROJECT ...

3. Add to CI/CD Pipelines

GitHub Actions example:

- name: Install publisher
  run: pip install feelpp-aptly-publisher

- name: Publish to APT
  run: feelpp-apt-publish --component ${{ github.event.repository.name }} ...

4. Documentation

  • Add to Feel++ developer documentation
  • Update README in apt repository
  • Create wiki pages if needed

📊 Success Metrics

Track:

  • PyPI downloads
  • GitHub stars
  • Issues/PRs
  • Adoption in Feel++ projects

🔮 Future Enhancements

Potential v1.1.0+ features:

  • Support for multiple architectures (arm64, etc.)
  • Parallel package uploads
  • Better progress indicators
  • Config file support
  • Dry-run mode
  • Repository cleanup commands

🆘 Troubleshooting

PyPI Publishing Fails

  1. Check credentials:

    • For GitHub Actions: Configure trusted publishing
    • For manual: Use API token or ~/.pypirc
  2. Package name conflict:

    • Name might be taken
    • Try alternative names
  3. Version exists:

    • Bump version in pyproject.toml
    • Can't republish same version

Installation Issues

Users might need:

# System dependencies
sudo apt install aptly git rsync

# For signing
sudo apt install gnupg

📞 Support

🎉 Celebration!

Once published, users worldwide can:

pip install feelpp-aptly-publisher

No more:

  • Cloning entire apt repository
  • Managing git submodules
  • Path configuration issues
  • Version inconsistencies

Just pure, simple pip install goodness! 🚀


Ready to publish? Follow Method 1 above to get it on PyPI!