Automated Release Configuration

How to use the pipeline

1. Linting (executed on every push)

# Triggers:
- push to any branch
- pull request to any branch

# Checks:
- Black (code formatting)
- isort (import sorting)
- flake8 (linting)
- mypy (type checking)

2. Tests (executed for dev, master, main)

# Triggers:
- push to branches: dev, master, main
- pull request to branches: dev, master, main

# Checks:
- pytest on Python 3.12 and 3.13
- coverage reports

3. Build and release (executed for tags)

# Triggers:
- push tag matching v*.*.*
- manual dispatch through Gitea interface

# Actions:
- Package build via Poetry
- Draft release creation
- Artifact upload (.whl and .tar.gz)

Release workflow

  1. Release preparation:

    # Update version in pyproject.toml
    poetry version patch  # or minor/major
    
    # Commit changes
    git add pyproject.toml
    git commit -m "bump version to $(poetry version -s)"
    
  2. Tag creation:

    # Create tag
    git tag v$(poetry version -s)
    git push origin v$(poetry version -s)
    
  3. Automatic process:

    • Pipeline starts automatically
    • Linting and tests execute
    • Package builds
    • Draft release created
  4. Release finalization:

    • Go to Gitea interface
    • Find created draft release
    • Edit description according to template
    • Publish release

Environment variables

For correct pipeline operation, ensure:

  • GITHUB_TOKEN - for release creation
  • Repository permissions for release creation

Customization

  • Change Python versions in test.yaml if needed
  • Add additional checks in lint.yaml
  • Configure notifications in pipeline.yaml