Skip to content

Multi-capability and svc2svc support for services #38

Multi-capability and svc2svc support for services

Multi-capability and svc2svc support for services #38

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
branches:
- main
workflow_dispatch:
permissions:
contents: read
jobs:
lint:
name: Ruff linting, formating, MyPy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup PDM
uses: pdm-project/setup-pdm@v4
with:
python-version: "3.8"
cache: true
- name: Install dependencies
run: |
pdm venv create --with-pip --force $PYTHON
pdm sync --dev -G:all
- run: |
pdm run ruff format --check
pdm run ruff check
pdm run lint-mypy
# Run unit tests only on Windows/MacOS, we can run the full test suite on Linux
test-unit:
name: Windows/MacOS unit tests
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
os:
- macos-latest
- windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Setup PDM
uses: pdm-project/setup-pdm@v4
with:
python-version: ${{ matrix.python-version }}
cache: true
- name: Install dependencies
run: |
pdm venv create --with-pip --force $PYTHON
pdm sync --dev -G:all
- run: pdm run test-unit
# we can only run our full test suite on Ubuntu due to the Github Actions services requirement
test-complete:
name: Test with coverage
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
os:
- ubuntu-latest
runs-on: ${{ matrix.os }}
services:
rabbitmq:
image: "bitnami/rabbitmq:3.13.3"
env:
# space-delimited list of plugins
RABBITMQ_PLUGINS: "rabbitmq_mqtt"
RABBITMQ_USERNAME: "intersect_username"
RABBITMQ_PASSWORD: "intersect_password"
# misleading env name, this is needed to set "loopback_users.$USERNAME = false"
RABBITMQ_MANAGEMENT_ALLOW_WEB_ACCESS: "yes"
ports:
- "1883:1883" # MQTT port
- "5672:5672" # AMQP port
minio:
image: "bitnami/minio:2024.6.4"
env:
MINIO_ROOT_USER: AKIAIOSFODNN7EXAMPLE
MINIO_ROOT_PASSWORD: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
MINIO_SKIP_CLIENT: "yes"
ports:
- "9000:9000" # main MINIO API port
- "9001:9001" # web UI
steps:
- uses: actions/checkout@v4
- name: Setup PDM
uses: pdm-project/setup-pdm@v4
with:
python-version: ${{ matrix.python-version }}
cache: true
- name: Install dependencies
run: |
pdm venv create --with-pip --force $PYTHON
pdm sync --dev -G:all
- run: pdm run test-all