Split CI jobs #51
Workflow file for this run
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: | |
pull_request: | |
branches: [ "main" ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
sdist: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ["3.x"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install build dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install build twine | |
- name: Build package | |
run: | | |
python -m build --sdist | |
python -m twine check dist/* | |
- name: Upload build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: sdist | |
path: | | |
dist/*.tar.gz | |
build: | |
name: ${{ matrix.os }} ${{ matrix.python-version }} | |
runs-on: ${{ matrix.os }} | |
needs: sdist | |
strategy: | |
matrix: | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
# os: [ubuntu-latest, macos-latest, windows-latest] | |
os: [ubuntu-latest, macos-latest] | |
steps: | |
- name: Get source distrubtion | |
uses: actions/download-artifact@v3 | |
with: | |
name: sdist | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install build dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install twine | |
- name: Build package | |
run: | | |
python -m pip wheel --wheel-dir dist geomodels*.tar.gz | |
python -m twine check dist/* | |
- name: Install | |
run: | | |
python -m pip install dist/*.whl | |
- name: Prepare the environment | |
run: | | |
geomodels-cli install-data -d data recommended | |
- name: Install test dependencies | |
run: | | |
python -m pip install pytest pytest-cov | |
if [ -f requirements-test.txt ]; then pip install -r requirements-test.txt; fi | |
- name: Test CLI | |
run: | | |
geomodels-cli info | |
- name: Test | |
run: | | |
cd dist | |
env GEOGRAPHICLIB_DATA="${PWD}/../data" python -m pytest --pyargs geomodels | |
lint: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ["3.x"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install lint dependencies | |
run: | | |
python -m pip install flake8 pydocstyle isort black | |
if [ -f requirements-lint.txt ]; then pip install -r requirements-lint.txt; fi | |
- name: Lint | |
run: | | |
make lint | |
docs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install docs dependencies | |
run: | | |
python -m pip install sphinx | |
if [ -f requirements-dev.txt ]; then pip install -r requirements-dev.txt; fi | |
if [ -f requirements-docs.txt ]; then pip install -r requirements-docs.txt; fi | |
- name: Build docs | |
run: | | |
# make docs include doctest | |
make docs | |
make -C docs linkcheck |