Skip to content

Merge pull request #398 from AaronDJohnson/fix_ci #426

Merge pull request #398 from AaronDJohnson/fix_ci

Merge pull request #398 from AaronDJohnson/fix_ci #426

Workflow file for this run

name: enterprise CI targets
on:
push:
branches: [ master, dev ]
pull_request:
branches: [ master, dev ]
release:
types:
- published
jobs:
tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-13]
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install non-python dependencies on mac
if: runner.os == 'macOS'
run: |
brew unlink gcc && brew link gcc
brew install automake suite-sparse
curl -sSL https://raw.githubusercontent.com/vallis/libstempo/master/install_tempo2.sh | sh
- name: Install non-python dependencies on linux
if: runner.os == 'Linux'
run: |
sudo apt-get install libsuitesparse-dev
curl -sSL https://raw.githubusercontent.com/vallis/libstempo/master/install_tempo2.sh | sh
- name: Install dependencies and package
env:
SUITESPARSE_INCLUDE_DIR: "/usr/local/opt/suite-sparse/include/suitesparse/"
SUITESPARSE_LIBRARY_DIR: "/usr/local/opt/suite-sparse/lib"
run: |
python -m pip install --upgrade pip setuptools wheel
python -m pip install -r requirements_dev.txt
python -m pip install -e .
- name: Display Python, pip, setuptools, and all installed versions
run: |
python -c "import sys; print(f'Python {sys.version}')"
python -c "import pip; print(f'pip {pip.__version__}')"
python -c "import setuptools; print(f'setuptools {setuptools.__version__}')"
python -m pip freeze
- name: Run lint
run: make lint
- name: Test with pytest
run: make test
- name: Codecov
uses: codecov/codecov-action@v4
#with:
# fail_ci_if_error: true
build:
needs: [tests]
name: Build source distribution
runs-on: ubuntu-latest
if: github.event_name == 'release'
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.8"
- name: Install non-python dependencies on linux
run: |
sudo apt-get install libsuitesparse-dev
curl -sSL https://raw.githubusercontent.com/vallis/libstempo/master/install_tempo2.sh | sh
- name: Build
run: |
python -m pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
pip install -r requirements_dev.txt
make dist
- name: Test deployability
run: |
pip install twine
twine check dist/*
- name: Test the sdist
run: |
mkdir tmp
cd tmp
python -m venv venv-sdist
venv-sdist/bin/python -m pip install --upgrade pip setuptools wheel
venv-sdist/bin/python -m pip install ../dist/enterprise*.tar.gz
venv-sdist/bin/python -c "import enterprise;print(enterprise.__version__)"
- name: Test the wheel
run: |
mkdir tmp2
cd tmp2
python -m venv venv-wheel
venv-wheel/bin/python -m pip install --upgrade pip setuptools
venv-wheel/bin/python -m pip install ../dist/enterprise*.whl
venv-wheel/bin/python -c "import enterprise;print(enterprise.__version__)"
- uses: actions/upload-artifact@v2
with:
name: dist
path: dist/*
deploy:
needs: [tests, build]
runs-on: ubuntu-latest
environment: deploy
permissions:
# IMPORTANT: this permission is mandatory for trusted publishing
id-token: write
if: github.event_name == 'release'
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.8'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine
- name: Download wheel/dist from build
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Build and publish
uses: pypa/gh-action-pypi-publish@release/v1