# Automated Release Configuration ## How to use the pipeline ### 1. Linting (executed on every push) ```bash # 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) ```bash # 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) ```bash # 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:** ```bash # 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:** ```bash # 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`