Skip to content

Github Actions

Github Actions #9

name: Simulation Bridge CI
on:
pull_request:
paths:
- "simulation_bridge/**"
- ".github/workflows/simulation-bridge-ci.yml"
jobs:
# ─────────────── 1. Formatting (autopep8) ───────────────
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install Poetry
env:
POETRY_HOME: ${{ runner.temp }}/poetry
run: |
python -m pip install --upgrade pip
curl -sSL https://install.python-poetry.org | python -
- name: Add Poetry to PATH
run: echo "${{ runner.temp }}/poetry/bin" >> $GITHUB_PATH
- name: Install dev dependencies
run: poetry install --with dev
- name: Check formatting (non-blocking)
run: poetry run autopep8 --recursive --diff simulation_bridge
# ───────────────── 2. Lint (pylint) ──────────────────
lint:
needs: format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install Poetry
env:
POETRY_HOME: ${{ runner.temp }}/poetry
run: |
python -m pip install --upgrade pip
curl -sSL https://install.python-poetry.org | python -
- name: Add Poetry to PATH
run: echo "${{ runner.temp }}/poetry/bin" >> $GITHUB_PATH
- name: Install dev dependencies
run: poetry install --with dev
- name: Run pylint (min score 8.0)
run: poetry run pylint simulation_bridge --fail-under=8
# ───── 3. Tests (matrix) – coverage solo su Ubuntu ─────
test:
needs: lint
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install Poetry
env:
POETRY_HOME: ${{ runner.temp }}/poetry
run: |
python -m pip install --upgrade pip
curl -sSL https://install.python-poetry.org | python -
- name: Add Poetry to PATH (Linux/macOS)
if: runner.os != 'Windows'
run: echo "${{ runner.temp }}/poetry/bin" >> $GITHUB_PATH
- name: Add Poetry to PATH (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: echo "${{ runner.temp }}\poetry\bin" |
Out-File -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Install dev dependencies
run: poetry install --with dev
# ---- Ubuntu runner: tests con coverage da pytest.ini ----
- name: Run pytest with coverage (Ubuntu)
if: runner.os == 'Linux'
run: poetry run pytest
- name: Upload coverage to Codecov (Ubuntu)
if: runner.os == 'Linux'
uses: codecov/codecov-action@v5
with:
files: coverage.xml
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
# ---- Windows/Mac runners: test senza coverage ----
- name: Run pytest (no coverage)
if: runner.os != 'Linux'
run: poetry run pytest -q
# ──────── 4. Build wheel + sdist & upload artefatti ────────
build:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install Poetry
env:
POETRY_HOME: ${{ runner.temp }}/poetry
run: |
python -m pip install --upgrade pip
curl -sSL https://install.python-poetry.org | python -
- name: Add Poetry to PATH
run: echo "${{ runner.temp }}/poetry/bin" >> $GITHUB_PATH
- name: Install runtime dependencies
run: poetry install --only main
- name: Build wheel and sdist
run: |
poetry build --format wheel
poetry build --format sdist
- name: Upload dist artefacts
uses: actions/upload-artifact@v4
with:
name: simulation-bridge-dist
path: dist/*.whl,dist/*.tar.gz