forked from Shifty/pyserveX
- Create a GitHub Actions workflow for testing with Python 3.12 and 3.13. - Update Makefile to include release management commands and pipeline checks. - Document the CI/CD pipeline structure and usage in PIPELINE.md. - Add structlog for structured logging and enhance logging utilities. - Implement release management script for automated versioning and tagging. - Modify logging configuration to support structured logging and improved formatting. - Update dependencies in pyproject.toml and poetry.lock to include structlog. - Enhance access logging in server and middleware to include structured data.
1.7 KiB
1.7 KiB
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
-
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)" -
Tag creation:
# Create tag git tag v$(poetry version -s) git push origin v$(poetry version -s) -
Automatic process:
- Pipeline starts automatically
- Linting and tests execute
- Package builds
- Draft release created
-
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.yamlif needed - Add additional checks in
lint.yaml - Configure notifications in
pipeline.yaml