Merge pull request #169 from pearu/dependabot/github_actions/conda-in… #78
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 | |
# https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency | |
# https://docs.github.com/en/developers/webhooks-and-events/events/github-event-types#pullrequestevent | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.number }}-${{ github.event.type }} | |
cancel-in-progress: true | |
on: [push, pull_request] | |
env: | |
CACHE_NUMBER: 0 | |
jobs: | |
lint: | |
name: lint and style checks | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install flake8 flake8-docstrings flake8-debugger flake8-bugbear pytest | |
- name: Install Pylibtiff | |
run: | | |
pip install -e . | |
- name: Run linting | |
run: | | |
flake8 libtiff/ | |
test: | |
runs-on: ${{ matrix.os }} | |
continue-on-error: ${{ matrix.experimental }} | |
needs: [lint] | |
strategy: | |
fail-fast: true | |
matrix: | |
os: ["windows-latest", "ubuntu-latest", "macos-latest"] | |
python-version: ["3.8", "3.9", "3.10"] | |
experimental: [false] | |
system-libtiff: [false] | |
include: | |
- python-version: "3.11" | |
os: "ubuntu-latest" | |
experimental: true | |
system-libtiff: false | |
- python-version: "3.10" | |
os: "ubuntu-latest" | |
experimental: false | |
system-libtiff: true | |
env: | |
PYTHON_VERSION: ${{ matrix.python-version }} | |
OS: ${{ matrix.os }} | |
UNSTABLE: ${{ matrix.experimental }} | |
ACTIONS_ALLOW_UNSECURE_COMMANDS: true | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v3 | |
- name: Setup Conda Environment | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
miniforge-variant: Mambaforge | |
miniforge-version: latest | |
use-mamba: true | |
python-version: ${{ matrix.python-version }} | |
activate-environment: pylibtiff | |
- name: Set cache environment variables | |
shell: bash -l {0} | |
run: | | |
echo "DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV | |
CONDA_PREFIX=$(python -c "import sys; print(sys.prefix)") | |
echo "CONDA_PREFIX=$CONDA_PREFIX" >> $GITHUB_ENV | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.CONDA_PREFIX }} | |
key: ${{ matrix.os }}-${{matrix.python-version}}-conda-${{ hashFiles('.conda/environment.yml') }}-${{ env.DATE }}-${{matrix.experimental}}-${{ env.CACHE_NUMBER }} | |
id: cache | |
- name: Update environment | |
run: mamba env update -n pylibtiff -f .conda/environment.yml | |
if: steps.cache.outputs.cache-hit != 'true' | |
- name: Install unstable dependencies | |
if: matrix.experimental == true | |
shell: bash -l {0} | |
# We must get LD_PRELOAD for stdlibc++ or else the manylinux wheels | |
# may break the conda-forge libraries trying to use newer glibc versions | |
run: | | |
python -m pip install \ | |
--index-url https://pypi.anaconda.org/scipy-wheels-nightly/simple/ \ | |
--trusted-host pypi.anaconda.org \ | |
--no-deps --pre --upgrade \ | |
numpy; | |
LD_PRELOAD=$(python -c "import sys; print(sys.prefix)")/lib/libstdc++.so | |
echo "LD_PRELOAD=${LD_PRELOAD}" >> $GITHUB_ENV | |
- name: Install system libtiff | |
if: matrix.system-libtiff == true | |
shell: bash -l {0} | |
run: sudo apt-get install -y libtiff-dev | |
- name: Install conda libtiff | |
if: matrix.system-libtiff == false | |
shell: bash -l {0} | |
run: conda install -y libtiff | |
- name: Install pylibtiff | |
shell: bash -l {0} | |
run: | | |
python -m pip install --no-deps -e . | |
- name: Run unit tests | |
shell: bash -l {0} | |
run: | | |
export LD_PRELOAD=${{ env.LD_PRELOAD }}; | |
pytest --cov=libtiff libtiff/tests | |
- name: Coveralls Parallel | |
uses: AndreMiras/coveralls-python-action@develop | |
with: | |
flag-name: run-${{ matrix.test_number }} | |
parallel: true | |
if: runner.os == 'Linux' | |
coveralls: | |
needs: [test] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Coveralls Finished | |
uses: AndreMiras/coveralls-python-action@develop | |
with: | |
parallel-finished: true |