Skip to content

Modernization phase 1.4 #683

Modernization phase 1.4

Modernization phase 1.4 #683

Workflow file for this run

name: main
on:
push:
branches:
- master
pull_request:
branches:
- master
permissions:
contents: read
pull-requests: read
jobs:
identifiers:
uses: wamp-proto/wamp-cicd/.github/workflows/identifiers.yml@main
check:
name: Code Quality Checks
needs: [identifiers]
runs-on: ubuntu-24.04
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: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Set up Python 3.11
run: uv python install 3.11
- name: Install just
uses: extractions/setup-just@v3
- name: Install ty (Astral type checker)
run: uv tool install ty
- name: Create venv and install dev dependencies
run: |
just create cpy311
just install-dev cpy311
- name: Run code quality checks
run: just check cpy311
test:
name: Unit Tests (Python ${{ matrix.python-version }})
needs: [identifiers]
runs-on: ubuntu-24.04
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 }}
strategy:
matrix:
python-version: ['3.11', '3.12']
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Set up Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}
- name: Install just
uses: extractions/setup-just@v3
- name: Create venv and install dependencies
run: |
VENV_NAME=cpy$(echo "${{ matrix.python-version }}" | tr -d '.')
just create ${VENV_NAME}
just install-dev ${VENV_NAME}
- name: Run unit tests (trial)
run: |
VENV_NAME=cpy$(echo "${{ matrix.python-version }}" | tr -d '.')
just test-trial ${VENV_NAME}
- name: Run unit tests (pytest)
run: |
VENV_NAME=cpy$(echo "${{ matrix.python-version }}" | tr -d '.')
just test-pytest ${VENV_NAME}
- name: Smoke test (crossbar version)
run: |
VENV_NAME=cpy$(echo "${{ matrix.python-version }}" | tr -d '.')
just test-smoke ${VENV_NAME}
test-functional:
name: Functional Tests
needs: [identifiers]
runs-on: ubuntu-24.04
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: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Set up Python 3.11
run: uv python install 3.11
- name: Install just
uses: extractions/setup-just@v3
- name: Create venv and install dependencies
run: |
just create cpy311
just install-dev cpy311
- name: Run functional tests
run: just test-functional cpy311
docs:
name: Documentation Build
needs: [identifiers]
runs-on: ubuntu-24.04
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: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libenchant-2-2
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Set up Python 3.11
run: uv python install 3.11
- name: Install just
uses: extractions/setup-just@v3
- name: Create venv and install dev dependencies
run: |
just create cpy311
just install-dev cpy311
- name: Build documentation
run: just docs cpy311
- name: Check documentation
run: just docs-check cpy311
build:
name: Build Distribution Packages
needs: [identifiers, check, test, docs]
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Set up Python 3.11
run: uv python install 3.11
- name: Install just
uses: extractions/setup-just@v3
- name: Create venv and install build tools
run: |
just create cpy311
just install-build-tools cpy311
- name: Build distribution packages
run: just dist cpy311
- name: Verify packages
run: just verify-dist cpy311
- name: List built packages
run: |
echo "Built packages:"
ls -lh dist/
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: dist-packages
path: dist/
if-no-files-found: error
analyze:
name: CodeQL Security Analysis
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: ['python']
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3