Github Actions #9
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |