ci: add tests for python3.12 #187
This file contains 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: | |
tags: ["*"] | |
branches: | |
- master | |
- main | |
pull_request: | |
branches: | |
- master | |
- main | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run pre-commit linting | |
run: pipx run pre-commit run --all-files | |
check-manifest: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# this test ensures that the sdist contains all necessary files | |
# if it fails, you need to either update MANIFEST.in, | |
# or add an explicit "ignore" rule to pyproject.toml | |
- name: Run check-manifest | |
run: pipx run check-manifest | |
test: | |
runs-on: ${{ matrix.platform }} | |
defaults: | |
run: | |
shell: bash -el {0} # needed when using setup-miniconda | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
platform: [ubuntu-latest, macos-latest, windows-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: conda-incubator/setup-miniconda@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
miniforge-version: latest | |
use-mamba: true | |
channels: conda-forge,gurobi,defaults | |
channel-priority: true | |
- name: install build deps | |
run: mamba install scip gurobi | |
- name: add gurobi license | |
shell: bash | |
id: write-license | |
env: | |
LICENSE: ${{ secrets.GRB_LICENSE_FILE }} | |
run: | | |
echo "$LICENSE" > $PWD/gurobi.lic | |
echo "grb_license_file=$PWD/gurobi.lic" >> $GITHUB_OUTPUT | |
- name: install package | |
run: | | |
python -m pip install -U pip | |
python -m pip install -e .[dev] | |
env: | |
CYTHON_TRACE: 1 # enable coverage of cython code | |
- name: run tests | |
run: pytest --color yes -v --cov ilpy --cov-report=xml | |
env: | |
GRB_LICENSE_FILE: ${{ steps.write-license.outputs.grb_license_file }} | |
- name: upload coverage | |
uses: codecov/codecov-action@v3 | |
# we only deploy the sdist to PyPI, the wheel is still complicated | |
deploy-sdist: | |
if: startsWith(github.ref, 'refs/tags') | |
needs: [test, check-manifest] | |
name: Build sdist, Publish to PyPI on tagged versions | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.x" | |
- name: Build an sdist | |
run: | | |
python -m pip install build | |
python -m build --sdist | |
- name: Publish to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
- uses: softprops/action-gh-release@v1 | |
with: | |
generate_release_notes: true |