Merge pull request #17 from FOI-Bioinformatics/fix-nightly-e2e-path #53
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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python 3.11 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install linting tools | |
| # Pin black/isort to exact versions: their formatting output changes | |
| # between releases, so an unpinned range makes `--check` nondeterministic | |
| # (a newer black on the runner can demand reformatting the repo cannot | |
| # reproduce locally). Bump deliberately, reformatting in the same commit. | |
| run: pip install "black==26.5.1" "isort==8.0.1" "ruff>=0.5.0" "mypy>=1.0" | |
| - name: Check formatting with black | |
| run: black --check neoswga/ | |
| - name: Check import ordering with isort | |
| run: isort --check neoswga/ | |
| - name: Lint with ruff (non-blocking informational baseline) | |
| continue-on-error: true | |
| run: ruff check neoswga tests | |
| - name: Static type check with mypy (non-blocking informational baseline) | |
| continue-on-error: true | |
| run: mypy neoswga --ignore-missing-imports --no-strict-optional | |
| test: | |
| needs: lint | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python-version: ["3.11", "3.12", "3.13"] | |
| os: [ubuntu-latest, macos-latest] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Jellyfish (k-mer counter) | |
| run: | | |
| if [ "${{ runner.os }}" = "Linux" ]; then | |
| sudo apt-get update && sudo apt-get install -y jellyfish | |
| else | |
| brew install jellyfish | |
| fi | |
| - name: Install package with dev dependencies | |
| run: pip install -e ".[dev]" | |
| - name: Run tests with coverage | |
| run: pytest tests/ -q --tb=short --cov=neoswga --cov-report=term-missing --cov-fail-under=50 | |
| build: | |
| needs: test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python 3.11 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install build tools | |
| run: pip install build twine | |
| - name: Build package | |
| run: python -m build | |
| - name: Check distribution | |
| run: twine check dist/* |