EnDevSols Long Suite — PyPI Publishing Standards & Checklist
This document defines the unified release and publishing standards across all repositories in the EnDevSols Long Suite (LongGuard, LongCache, LongParser, LongProbe, etc.).
Following a uniform workflow name, environment structure, and setup protocol ensures zero friction, predictable CI/CD pipelines, and foolproof PyPI Trusted Publishing configuration.
1. Unified Workflow Architecture
To eliminate configuration drift and avoid claim mismatches on PyPI, all Long Suite repositories use the identical workflow file path and naming convention:
- Standard File Path:
.github/workflows/publish.yml - Workflow Name:
Publish to PyPI
Why publish.yml?
PyPI Trusted Publishing requires repository owners to declare the exact workflow filename generating the OpenID Connect (OIDC) identity token. By standardizing on publish.yml across all tools, maintainers and administrators always register the same filename on PyPI regardless of which tool is being configured.
2. GitHub Environments Standard
Every Long Suite repository must configure two environments under Settings → Environments:
pypi:- Used for production package publication to PyPI.
- Recommended: Configure Required reviewers (e.g., repository maintainers / admin) to prevent accidental releases.
testpypi:- Used for pre-release rehearsals and verification on TestPyPI.
- Open access for release testing.
3. PyPI Trusted Publishing Configuration Matrix
When registering a GitHub Actions publisher on PyPI or TestPyPI, use the standardized claims:
| Field | TestPyPI (test.pypi.org) |
Production PyPI (pypi.org) |
|---|---|---|
| Owner | ENDEVSOLS |
ENDEVSOLS |
| Repository name | <RepositoryName> (e.g. LongGuard) |
<RepositoryName> (e.g. LongGuard) |
| Workflow name | publish.yml |
publish.yml |
| Environment name | testpypi |
pypi |
[!IMPORTANT] The Workflow name field on PyPI must only contain the file name (
publish.yml), never the full directory path (do not enter.github/workflows/publish.yml).
4. Setup Checklist for New Long Suite Repositories
Use this checklist whenever creating a new repository or onboarding a project into the Long Suite:
Phase A: Repository Setup
- [ ] Add
.github/workflows/publish.ymlusing the suite-standard release template. - [ ] Verify that permissions in
publish.ymlinclude: - [ ] In GitHub repo Settings → Environments, create:
- [ ] Environment
pypi - [ ] Environment
testpypi
Phase B: PyPI Registration (Complete both at the same time)
- [ ] Log in to TestPyPI (
https://test.pypi.org/manage/account/publishing/): - [ ] Add pending or project publisher for
ENDEVSOLS/<RepositoryName>, workflowpublish.yml, environmenttestpypi. - [ ] Log in to Production PyPI (
https://pypi.org/manage/account/publishing/): - [ ] Add pending or project publisher for
ENDEVSOLS/<RepositoryName>, workflowpublish.yml, environmentpypi.
Phase C: Rehearsal & Verification
- [ ] Create a release candidate tag (e.g.
v0.1.0rc1). - [ ] Dispatch
Publish to PyPIwithtestpypi: trueand verify successful publication on TestPyPI. - [ ] Dispatch
Publish to PyPIwithpublish: truefor the final tagged stable release.