Centralized reusable CI/CD (GitHub) helpers and workflows. This is intended to be added to WAMP target (using) repositories as a Git submodule.
See also: AI Support Module
- Single Source of Truth - Update once in
wamp-cicdorwamp-ai, versioned and evolvable over time, propagate everywhere via git submodule update - Consistency - Issue templates, PR templates, CI actions, and scripts behave identically across projects
- Reduced Maintenance - Bug fixes in shared scripts benefit all projects
- Onboarding - New contributors see the same patterns everywhere
- Standard Git Mechanisms - Git submodules (standard practice), Symlinks (filesystem-level solution), Automated setup via justfile
- Dual-Level Coverage - Project-level (single using repo) and Workspace-level (multi-repo)
- AI Policy Enforcement - Centralized
AI_GUIDELINES.mdensures consistent AI assistant behavior - Multi-AI Support - Claude (
CLAUDE.md), Gemini (.gemini/GEMINI.md), extensible for future AI assistants
The Architecture - reused repos, and using repos:
wamp-proto/wamp-ai wamp-proto/wamp-cicd
│ │
│ .ai submodule │ .cicd submodule
▼ ▼
┌──────────────────────────────────────────────┐
│ crossbario/zlmdb │
│ crossbario/autobahn-python │
│ crossbario/crossbar │
│ crossbario/txaio │
│ (future: cfxdb, autobahn-js, etc.) │
└──────────────────────────────────────────────┘
Add this repo as a submodule to a WAMP related repo:
cd ~/scm/crossbario/autobahn-python
git submodule add https://github.com/wamp-proto/wamp-cicd.git .cicdClone a WAMP related repo including submodules:
git clone --recursive [email protected]:crossbario/autobahn-python.gitInitialize a WAMP related repo including submodules:
git submodule update --init --recursiveUpdate a WAMP related repo submodules:
git submodule update --remote --mergeIn your .github/workflows/<workflow>.yml:
jobs:
identifiers:
uses: ./.cicd/workflows/identifiers.yml
test:
needs: identifiers
runs-on: ubuntu-latest
env:
BASE_REPO: ${{ needs.identifiers.outputs.base_repo }}
BASE_BRANCH: ${{ needs.identifiers.outputs.base_branch }}
PR_NUMBER: ${{ needs.identifiers.outputs.pr_number }}
PR_REPO: ${{ needs.identifiers.outputs.pr_repo }}
PR_BRANCH: ${{ needs.identifiers.outputs.pr_branch }}
steps:
- name: Use identifiers
run: |
echo "Identifier: ${PR_NUMBER}-${PR_REPO}-${PR_BRANCH}"