Skip to content

Commit 077d2a3

Browse files
authored
Fix 212 (#222)
* start new dev branch; add audit file * Use verified artifacts + check-release-fileset in CI/release (#212) Align txaio with the rest of the WAMP group's release artifact handling: - main.yml: replace the three `actions/upload-artifact@v4` uses (coverage, documentation, build package) with the shared `wamp-proto/wamp-cicd/actions/upload-artifact-verified@main` action, which adds SHA256 chain-of-custody. These are CI artifacts not consumed by the (self-contained) release workflow, so the verified action's name suffix breaks no downstream download. - release.yml: add the shared `check-release-fileset@main` action to the production job, after the non-PyPI files are removed and before the PyPI publish, validating the exact payload in strict (fail-closed) mode. txaio is pure-Python, so the required fileset is the universal `py3-none-any` wheel plus the source distribution. Verified locally: `just build` + `just build-sourcedist` produce exactly `txaio-26.6.1-py3-none-any.whl` and `txaio-26.6.1.tar.gz` (matching the targets); both workflow files parse as valid YAML. Note: This work was completed with AI assistance (Claude Code).
1 parent 8076fbd commit 077d2a3

4 files changed

Lines changed: 23 additions & 3 deletions

File tree

.audit/oberstet_fix_212.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
- [ ] I did **not** use any AI-assistance tools to help create this pull request.
2+
- [x] I **did** use AI-assistance tools to *help* create this pull request.
3+
- [x] I have read, understood and followed the projects' [AI Policy](https://github.com/crossbario/autobahn-python/blob/main/AI_POLICY.md) when creating code, documentation etc. for this pull request.
4+
5+
Submitted by: @oberstet
6+
Date: 2026-06-18
7+
Related issue(s): #212
8+
Branch: oberstet:fix_212

.github/workflows/main.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ jobs:
9999

100100
- name: Upload coverage report
101101
if: always()
102-
uses: actions/upload-artifact@v4
102+
uses: wamp-proto/wamp-cicd/actions/upload-artifact-verified@main
103103
with:
104104
name: coverage-report
105105
path: docs/_build/html/coverage/
@@ -164,7 +164,7 @@ jobs:
164164
run: just docs cpy314
165165

166166
- name: Upload documentation artifacts
167-
uses: actions/upload-artifact@v4
167+
uses: wamp-proto/wamp-cicd/actions/upload-artifact-verified@main
168168
with:
169169
name: documentation
170170
path: docs/_build/html/
@@ -239,7 +239,7 @@ jobs:
239239
ls -la dist/
240240
241241
- name: Upload build artifacts
242-
uses: actions/upload-artifact@v4
242+
uses: wamp-proto/wamp-cicd/actions/upload-artifact-verified@main
243243
with:
244244
name: package-${{ matrix.python-env }}
245245
path: dist/

.github/workflows/release.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,17 @@ jobs:
341341
ls -lh dist/
342342
echo "======================================================================"
343343
344+
# Fail-closed validation of the exact PyPI payload. txaio is pure-Python,
345+
# so the required fileset is the universal wheel plus the source dist.
346+
- name: Validate release fileset (PyPI)
347+
uses: wamp-proto/wamp-cicd/actions/check-release-fileset@main
348+
with:
349+
distdir: dist
350+
mode: strict
351+
targets: |
352+
py3-none-any
353+
source
354+
344355
- name: Publish to PyPI
345356
uses: pypa/gh-action-pypi-publish@release/v1
346357
with:

docs/changelog.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ This document contains a reverse-chronological list of changes to txaio.
1717

1818
**Other**
1919

20+
* Align artifact handling with the rest of the WAMP group: CI now uploads build, coverage and documentation artifacts via the shared ``upload-artifact-verified`` action (SHA256 chain-of-custody), and the release workflow validates the exact PyPI payload — the universal ``py3-none-any`` wheel plus the source distribution — with the shared, fail-closed ``check-release-fileset`` action before publishing (`#212 <https://github.com/crossbario/txaio/issues/212>`_)
2021
* Remove three permanently-skipped legacy tests that exercised the ``@asyncio.coroutine`` decorator. That decorator was removed in Python 3.11 (txaio's minimum supported version), so the tests could no longer run on any supported interpreter and only emitted skips (`#152 <https://github.com/crossbario/txaio/issues/152>`_)
2122
* Bumped the shared ``wamp-ai`` and ``wamp-cicd`` Git submodules to match the rest of the WAMP project group (zlmdb / autobahn-python 26.6.1) for the coordinated release. The ``wamp-cicd`` bump picks up the GHSA-6658 shell-injection hardening in the shared ``identifiers.yml`` reusable workflow (untrusted GitHub event fields are now passed via ``env:`` as quoted data with a fail-closed branch-name allowlist) (`#218 <https://github.com/crossbario/txaio/issues/218>`_)
2223
* Declare the ``ty`` type checker in the ``dev`` extra and run it from the project venv (dropping the separate global ``uv tool install ty`` step), so local and CI resolve the same latest ``ty``. Fixed a newly-reported ``ty`` ``invalid-argument-type`` diagnostic in ``tx.py`` (the Twisted ``ILogObserver`` is provided via ``zope.interface`` ``@provider``, which static checkers cannot follow) with a localized ``cast`` rather than a blanket rule ignore. Excluded the ``.ai`` / ``.cicd`` submodules from ``ruff`` (they carry their own linting/CI) (`#218 <https://github.com/crossbario/txaio/issues/218>`_)

0 commit comments

Comments
 (0)