44
55| Channel | Workflow | Secret(s) |
66| ---------| ----------| -----------|
7- | ** PyPI** | ` publish.yml ` | OIDC Trusted Publishing (no token) |
8- | ** Docker** | ` publish-docker.yml ` | ` DOCKERHUB_USERNAME ` , ` DOCKERHUB_TOKEN ` |
9- | ** AUR** | ` publish-aur.yml ` | ` AUR_SSH_PRIVATE_KEY ` , ` AUR_REPO_TOKEN ` |
10- | ** Homebrew** | ` notify-homebrew.yml ` → ` homebrew-tap ` | ` HOMEBREW_TAP_TOKEN ` |
7+ | ** PyPI** | ` publish.yml ` (Release) | OIDC Trusted Publishing (no token) |
8+ | ** Docker** | ` publish-docker.yml ` (after Release) | ` DOCKERHUB_USERNAME ` , ` DOCKERHUB_TOKEN ` |
9+ | ** AUR** | ` publish-aur.yml ` (after Release) | ` AUR_SSH_PRIVATE_KEY ` , ` AUR_REPO_TOKEN ` |
10+ | ** Homebrew** | ` notify-homebrew.yml ` → ` homebrew-tap ` (after Release) | ` HOMEBREW_TAP_TOKEN ` |
1111
1212Configure secrets under ** Settings → Environments → ` pypi ` → Environment secrets**
1313(not repository Action secrets). Release, Docker, AUR, and Homebrew jobs all use
1414` environment: pypi ` .
1515
16+ Docker / AUR / Homebrew install from PyPI, so they run via ` workflow_run `
17+ ** after** Release succeeds (they no longer race the same tag push). Each
18+ consumer also polls PyPI with retries for CDN indexing lag.
19+
1620## PyPI Trusted Publishing
1721
1822The Release job uses the GitHub Actions environment ** ` pypi ` **
@@ -37,8 +41,10 @@ git push origin create-awesome-python-app@X.Y.Z
3741
3842Then:
3943
40- 1 . Confirm Release (PyPI), Notify Homebrew, Publish to AUR, and Docker workflows
41- 2 . Smoke: ` uvx create-awesome-python-app@X.Y.Z --help `
44+ 1 . Confirm ** Release** (PyPI + GitHub Release) succeeds — Docker, AUR, and
45+ Homebrew notify then start via ` workflow_run `
46+ 2 . Confirm those three workflows complete
47+ 3 . Smoke: ` uvx --python 3.12 create-awesome-python-app@X.Y.Z --help `
4248
4349## Docker Hub
4450
@@ -106,8 +112,9 @@ If the workflow fails before `Publish to AUR`, check the preflight log first:
106112 environment or the workflow did not get environment access.
107113- AUR RPC / ` git ls-remote ` failures are usually transient AUR availability
108114 issues; rerun the job after a few minutes.
109- - PyPI metadata failures usually mean the release tag fired before PyPI finished
110- indexing the sdist; rerun once PyPI shows the version.
115+ - PyPI metadata failures usually mean CDN indexing lag after upload; the
116+ workflow polls PyPI for several minutes — if it still fails, check
117+ ` https://pypi.org/pypi/create-awesome-python-app/<version>/json ` and rerun.
111118
112119If ` Publish to AUR ` succeeds but the RPC summary still shows the previous
113120version, wait for AUR propagation and rerun the distribution smoke workflow.
165172## After secrets are in place
166173
167174Every subsequent release only requires tagging ` create-awesome-python-app@X.Y.Z ` .
168- PyPI, Homebrew notify, AUR, and Docker workflows fan out from that tag.
175+ ** Release** publishes to PyPI; Docker, AUR, and Homebrew notify follow when
176+ that workflow succeeds.
0 commit comments