-
Notifications
You must be signed in to change notification settings - Fork 771
Closed
Labels
Description
Feature Description
We should aim to synchronize
- CI/CD design & implementation, and
- Flatbuffers vendoring
- wamp-ai and wamp-cicd Submodules
between autobahn-python and zlmdb as far as reasonable.
See also: crossbario/zlmdb#100
CI/CD
This requires to fix the following net delta for synchronization of CI/CD:
Justfile Recipes Comparison
Recipes Only in autobahn-python
-
bump-flatbuffers=> add to zlmdb -
install-flatc=> rename in autobahn-python toinstall-flatc-system, adding a prominent message explaining why we normally DON'T need or want it (pointing to bundledflatc), asking "DO YOU REALLY WANT TO?" -
docs-integrate-github-release=> add to zlmdb -
download-release-artifacts=> add to zlmdb -
generate-release-notes=> add to zlmdb
Recipes Only in zlmdb
-
test-bundled-flatc=> add to autobahn-python -
test-smoke=> add to autobahn-python -
test-wheel-install=> add to autobahn-python -
test-sdist-install=> add to autobahn-python -
test-tox=> remove from zlmdb (we don't use any tox anymore! remove also dev deps for tox if applicable) -
test-tox-all=> remove from zlmdb (we don't use any tox anymore! remove also dev deps for tox if applicable)
GitHub Workflows Comparison
Workflows and Artifacts description
- zlmdb has
zlmdb/.github/workflows/README.md=> add similar to autobahn-python
Key Differences in release.yml
- Identifiers use
wamp-cicd/.github/workflows/identifiers.yml@main=> zlmdb should use this (everywhere)! - Release types => zlmdb should use
developmentvsstable(via identifiers) - FlatBuffers schemas: both projects should bundle Flatbuffers source schema (
.fbs) and binary (compiled using the bundledflatc!) schema files (.bfbs) for:
(pypy311) oberstet@amd-ryzen5:~/work/wamp$ find zlmdb/src/zlmdb/ -name "*.fbs"
zlmdb/src/zlmdb/flatbuffers/reflection.fbs
(pypy311) oberstet@amd-ryzen5:~/work/wamp$ find autobahn-python/src/autobahn/ -name "*.fbs"
autobahn-python/src/autobahn/wamp/flatbuffers/session.fbs
autobahn-python/src/autobahn/wamp/flatbuffers/wamp.fbs
autobahn-python/src/autobahn/wamp/flatbuffers/roles.fbs
autobahn-python/src/autobahn/wamp/flatbuffers/auth.fbs
autobahn-python/src/autobahn/wamp/flatbuffers/pubsub.fbs
autobahn-python/src/autobahn/wamp/flatbuffers/types.fbs
autobahn-python/src/autobahn/wamp/flatbuffers/rpc.fbs
(pypy311) oberstet@amd-ryzen5:~/work/wamp$
Flatbuffers vendoring
This requires to fix the following net delta for synchronization of Flatbuffers vendoring:
autobahn-python is MISSING (copy/adapt from zlmdb):
-
src/autobahn/_flatc/__init__.py- Python wrapper for bundled flatc binary -
src/autobahn/_flatc/bin/- Directory for bundled flatc binary (built during wheel build) -
pyproject.toml- Addflatc = "autobahn._flatc:main"to[project.scripts] -
src/autobahn/flatbuffers/_git_version.py- Git version tracking for vendored flatbuffers -
src/autobahn/flatbuffers/__init__.py- Addversion()function with rich version parsing -
src/autobahn/flatbuffers/reflection.fbs- FlatBuffers reflection schema source -
src/autobahn/flatbuffers/reflection.bfbs- Compiled reflection schema (generated at build time) -
hatch_build.py- Add_build_flatc()method to compile flatc during wheel build -
hatch_build.py- Add_generate_reflection_bfbs()method -
hatch_build.py- Add_update_flatbuffers_git_version()method -
justfile- Addtest-bundled-flatcrecipe to verify flatc works after install -
justfile- Updateupdate-flatbuffersto also copy_git_version.pytemplate andreflection.fbs
zlmdb is MISSING (copy/adapt from autobahn-python):
- Nothing - zlmdb's implementation is the reference
Both projects should ensure:
- WAMP
.fbsschemas have corresponding.bfbsfiles in release artifacts - Version synchronization check between projects (already exists:
zlmdb.check_autobahn_flatbuffers_version_in_sync(); needed:zlmdb.check_zlmdb_flatbuffers_version_in_sync()) - Smoke tests verify
flatc --versionmatches vendored FlatBuffers runtime version
wamp-ai and wamp-cicd Submodule Synchronization
Both projects use shared Git submodules from wamp-proto/wamp-ai and
wamp-proto/wamp-cicd. Consistent usage is an important goal for
maintainability across the WAMP project ecosystem.
Submodule Status
| Submodule | zlmdb | autobahn-python | Status |
|---|---|---|---|
.ai (wamp-ai) |
✅ Present | ✅ Present | ✅ In sync |
.cicd (wamp-cicd) |
✅ Present | ✅ Present | ✅ In sync |
CLAUDE.md symlink |
✅ → .ai/AI_GUIDELINES.md |
✅ → .ai/AI_GUIDELINES.md |
✅ In sync |
wamp-cicd Reusable GitHub Actions
| Action | zlmdb | autobahn-python | Notes |
|---|---|---|---|
upload-artifact-verified |
✅ Used in wheels*.yml, main.yml | ✅ Used in main.yml | ✅ In sync |
download-artifact-verified |
✅ Used in release.yml | ✅ Used in release.yml, release-post-comment.yml | ✅ In sync |
check-release-fileset |
✅ Used in release.yml | ✅ Used in release.yml | ✅ In sync |
validate-audit-file |
❌ Not used | ❌ Not used | ⚠ Consider adding |
wamp-cicd Reusable Workflows
| Workflow | zlmdb | autobahn-python | Action Required |
|---|---|---|---|
identifiers.yml |
⚠ Used in 3 workflows | ✅ Used in 7 workflows | zlmdb should use in release.yml, wheels.yml |
zlmdb is MISSING identifiers.yml in:
-
release.yml- should use identifiers forrelease_type(developmentvsstable) -
wheels.yml- should use identifiers for consistent naming
wamp-cicd Scripts
| Script | zlmdb | autobahn-python | Action Required |
|---|---|---|---|
prepare-changelog.sh |
❌ Inline in justfile | ✅ Uses .cicd/scripts/ |
zlmdb should use shared script |
generate-release-notes.sh |
❌ Missing recipe | ✅ Uses .cicd/scripts/ |
zlmdb should add recipe using shared |
| script | |||
download-release-artifacts.sh |
❌ Missing recipe | ✅ Uses .cicd/scripts/ |
zlmdb should add recipe using shared |
| script | |||
sanitize.sh |
✅ Used via identifiers.yml | ✅ Used via identifiers.yml | ✅ In sync |
sphinx_auto_section_anchors.py |
❓ Check usage | ❓ Check usage | Verify both use for docs |
zlmdb justfile recipes should use shared scripts:
-
prepare-changelog=> change to:.cicd/scripts/prepare-changelog.sh "{{ version }}" "crossbario/zlmdb" - Add
generate-release-notesrecipe using.cicd/scripts/generate-release-notes.sh - Add
download-release-artifactsrecipe using.cicd/scripts/download-release-artifacts.sh
wamp-cicd Templates
| Template | zlmdb | autobahn-python | Notes |
|---|---|---|---|
ISSUE_TEMPLATE/bug_report.md |
✅ Present | ✅ Present | Should match .cicd/templates/ |
ISSUE_TEMPLATE/feature_request.md |
✅ Present | ✅ Present | Should match .cicd/templates/ |
ISSUE_TEMPLATE/config.yml |
✅ Present | ✅ Present | Should match .cicd/templates/ |
PULL_REQUEST_TEMPLATE/ |
❓ Check | ❓ Check | Consider adding from .cicd/templates/ |
Both projects should:
- Verify
.github/ISSUE_TEMPLATE/matches.cicd/templates/ISSUE_TEMPLATE/ - Add
.github/PULL_REQUEST_TEMPLATE/from.cicd/templates/PULL_REQUEST_TEMPLATE/
wamp-ai Components
| Component | zlmdb | autobahn-python | Notes |
|---|---|---|---|
AI_GUIDELINES.md |
✅ Symlinked as CLAUDE.md |
✅ Symlinked as CLAUDE.md |
✅ In sync |
AI_POLICY.md |
✅ Available | ✅ Available | ✅ In sync |
.githooks/commit-msg |
✅ Available | ✅ Available | ⚠ Verify hooks are installed |
.githooks/pre-push |
✅ Available | ✅ Available | ⚠ Verify hooks are installed |
justfile |
✅ Available | ✅ Available | For AI audit management |
Summary of Actions
zlmdb needs to:
- Use
identifiers.ymlinrelease.ymlandwheels.yml - Refactor
prepare-changelogto use.cicd/scripts/prepare-changelog.sh - Add
generate-release-notesrecipe using.cicd/scripts/generate-release-notes.sh - Add
download-release-artifactsrecipe using.cicd/scripts/download-release-artifacts.sh - Verify
.github/ISSUE_TEMPLATE/matches.cicd/templates/ISSUE_TEMPLATE/ - Add
.github/PULL_REQUEST_TEMPLATE/from.cicd/templates/
autobahn-python needs to:
- Verify
.github/ISSUE_TEMPLATE/matches.cicd/templates/ISSUE_TEMPLATE/ - Add
.github/PULL_REQUEST_TEMPLATE/from.cicd/templates/
Both projects should:
- Keep
.aiand.cicdsubmodules updated to latestmain - Verify git hooks from
.ai/.githooks/are properly installed - Consider using
validate-audit-fileaction for AI audit trail
Checklist
- I have searched existing issues to avoid duplicates
- I have described the problem clearly
- I have provided use cases
- I have considered alternatives
- I have assessed impact and breaking changes