-
Notifications
You must be signed in to change notification settings - Fork 0
feat: EPUPlayer release workflow with PyPI publishing #120
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Move fsrecorder from tools/fsrecorder/ to packages/smartem-fsrecorder/ with proper package structure: - pyproject.toml with hatchling build backend - Modular code: models, recorder, replayer, cli - Entry point: fsrecorder command - Tests with pytest - README with installation and usage docs Package name: smartem-fsrecorder Initial version: 1.0.0
Add release-fsrecorder.yml workflow: - Tag fsrecorder-v* triggers stable release to GitHub + PyPI - Push to main triggers RC pre-release to GitHub only - PR triggers build + test only - Tests on Linux and Windows - PyInstaller Windows exe build with smoke tests - PyPI Trusted Publisher publishing Add PR automation: - pr-admin.yml for auto-labeling and project board integration - labeler.yml with component labels for monorepo
Document key decisions for fsrecorder release workflow: - Dual distribution: Windows exe + Python package - Semantic versioning with fsrecorder-v* tags - RC releases on push to main, stable on tag - PyPI for stable releases only - Hybrid release notes generation
Delete tools/fsrecorder/ directory (code moved to packages/) Delete build_win_fsrecorder.yml (replaced by release-fsrecorder.yml)
Comprehensive rename of fsrecorder to epuplayer including: Package and module: - smartem-fsrecorder -> smartem-epuplayer - smartem_fsrecorder -> smartem_epuplayer Classes: - FSRecorder -> EPURecorder - FSReplayer -> EPUReplayer - FSEvent -> EPUEvent CLI and executables: - fsrecorder -> epuplayer - fsrecorder.exe -> epuplayer.exe CI/CD: - release-fsrecorder.yml -> release-epuplayer.yml - Tag pattern: fsrecorder-v* -> epuplayer-v* - Label: component:fsrecorder -> component:epuplayer Documentation: - ADR 0013 renamed and updated - e2e-simulation.md updated - deployment.md updated - smartem-agent-design.md updated - CLAUDE.md and ARCHITECTURE.md updated Tools: - E2E test scripts updated to use epuplayer CLI - Workspace pyproject.toml optional dep renamed
- Fix remaining documentation references to fsrecorder - Update recording filenames from _fsrecord to _epurecording - Add component:epuplayer label to GitHub labels config - Sync labels (deletes old component:fsrecorder, updates epuplayer)
|
CI Failures
PyPI Configuration Needed Yes, before the first publish you need to configure Trusted Publishers on PyPI:
This enables OIDC-based publishing (no API tokens needed). |
EPURecorder.watch_dir is intentionally resolved for consistent path handling. Test now compares against resolved fixture path to handle Windows short path forms (e.g., RUNNER~1 vs runneradmin).
|
Step 1: Create a PAT with project access
Step 2: Add secret to repo
Alternatively, if you have the token already, you can add it via CLI: |
- Update labeler.yml to use labels from github-labels-config.ts - Map docs → documentation, ci → devops, webui → smartem-devtools:webui, etc. - Add component:smartem-workspace to labels config - Sync labels (delete orphaned labels, create missing ones) This prevents github-actions bot from recreating unofficial labels that were deleted by the label sync script.
Summary
Implements GitHub Releases and PyPI publishing for EPUPlayer tool with:
epuplayer-v*)Closes #117
Changes
Package Restructuring
tools/fsrecorder/topackages/smartem-epuplayer/epuplayercommandRelease Workflow
release-epuplayer.yml: Tag → stable release (GitHub + PyPI), main push → RC (GitHub only)PR Automation
pr-admin.ymlfor auto-labeling and project board integrationlabeler.ymlwithcomponent:epuplayerlabel for monorepoDocumentation
E2E Test Scripts
epuplayerCLISetup Required After Merge
smartem-epuplayerPROJECT_TOKENsecret for project board automation (or use org-level permissions)pypiTest plan
epuplayer-v1.0.0pip install smartem-epuplayerepuplayer.exe --help