deploy.yml: Upgrade action versions #52
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
# Python: "3.8", "3.9", "3.10" | |
# Older version do not support f-strings | |
name: Python package | |
on: | |
workflow_dispatch: | |
push: | |
branches: [ deploy ] | |
# pull_request: | |
# branches: [ deploy ] | |
jobs: | |
# # Does not produce manylinux that is required for twine | |
# build_unix: | |
# name: Build wheels on ${{ matrix.os }} | |
# runs-on: ${{ matrix.os }} | |
# strategy: | |
# fail-fast: true | |
# matrix: | |
# # os: [ubuntu-20.04,ubuntu-18.04] | |
# # python-version: ["3.8","3.9","3.10"] | |
# os: [ubuntu-18.04] | |
# python-version: ["3.9"] | |
# 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 dependencies | |
# run: | | |
# python -m pip install --upgrade pip | |
# python -m pip install pytest pytest-benchmark build | |
# python -m pip install numpy scipy matplotlib>=3.0.0 | |
# if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
# - name: Compile and install | |
# run: | | |
# python -m pip install . -v | |
# ls ${{ github.workspace }}/build || true | |
# - name: Test installation | |
# run : | | |
# mv dtaidistance dtaidistance_pkg | |
# python ./util/check_installation.py | |
# mv dtaidistance_pkg dtaidistance | |
# - name: Test with pytest | |
# run: | | |
# mv dtaidistance dtaidistance_pkg | |
# pytest --ignore=venv --benchmark-skip | |
# mv dtaidistance_pkg dtaidistance | |
# - name: Build | |
# run: | | |
# python -m build | |
# - name: Store wheels | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: wheels | |
# path: dist/*.whl | |
build_unix: | |
name: Build wheels on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
# os: [ubuntu-20.04,ubuntu-18.04] | |
# python-version: ["3.8","3.9","3.10"] | |
os: [ubuntu-22.04] | |
# cibuildwheel will automatically provide all Python versions | |
python-version: ["3.9"] | |
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 dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install cibuildwheel==2.3.1 | |
- name: Build wheel | |
run: | | |
pwd | |
ls | |
python -m cibuildwheel --output-dir dist/ | |
env: | |
CIBW_BUILD_VERBOSITY: 2 | |
# cp36-* and cp37-* do not support f-strings | |
CIBW_SKIP: cp36-* pp* *-manylinux_i686 *-musllinux_i686 *-musllinux_x86_64 | |
CIBW_TEST_EXTRAS: "dev" | |
CIBW_TEST_COMMAND: pytest --ignore=venv --benchmark-skip {project}/tests | |
- name: Store wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels | |
path: dist/*.whl | |
build_macos: | |
name: Build wheels on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
os: [macos-11, macos-12, macos-13, macos-14] | |
python-version: ["3.8","3.9","3.10", "3.11", "3.12"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install OpenMP | |
run: | | |
# OpenMP libraries are not installed by default on macos | |
clang --version | |
clang --version | grep "\(13\.\|14\.\|15\.\)" | |
# hardcoded, not ideal | |
# https://mac.r-project.org/openmp/ | |
# This includes only the dynamic library | |
curl -O https://mac.r-project.org/openmp/openmp-13.0.0-darwin21-Release.tar.gz | |
sudo tar fvxz openmp-13.0.0-darwin21-Release.tar.gz -C / | |
ls /usr/local/lib | |
ls /usr/local/include | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install pytest pytest-benchmark build | |
python -m pip install numpy scipy matplotlib>=3.0.0 | |
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
- name: Compile and install | |
run: | | |
export LDFLAGS="-L/usr/local/lib" | |
export CPPFLAGS="-I/usr/local/include" | |
python -m pip install . -v | |
ls ${{ github.workspace }}/build || true | |
- name: Test installation | |
run : | | |
mv dtaidistance dtaidistance_pkg | |
python ./util/check_installation.py | |
mv dtaidistance_pkg dtaidistance | |
- name: Test with pytest | |
run: | | |
export LDFLAGS="-L/usr/local/lib" | |
export CPPFLAGS="-I/usr/local/include" | |
mv dtaidistance dtaidistance_pkg | |
pytest --ignore=venv --benchmark-skip | |
mv dtaidistance_pkg dtaidistance | |
- name: Build | |
run: | | |
python -m build | |
- name: Store wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels | |
path: dist/*.whl | |
# Runners are not yet picked up? | |
# build_macos_arm: | |
# name: Build wheels on ${{ matrix.os }} | |
# runs-on: ${{ matrix.os }} | |
# strategy: | |
# fail-fast: true | |
# matrix: | |
# os: [macos-13-arm64, macos-14-arm64] # these runners are not yet being picked up by github actions (yet?) | |
# python-version: ["3.11", "3.12"] | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Install OpenMP | |
# run: | | |
# # OpenMP libraries are not installed by default on macos | |
# clang --version | |
# clang --version | grep "\(13\.\|14\.\|15\.\)" | |
# # hardcoded, not ideal | |
# # https://mac.r-project.org/openmp/ | |
# # This includes only the dynamic library | |
# curl -O https://mac.r-project.org/openmp/openmp-13.0.0-darwin21-Release.tar.gz | |
# sudo tar fvxz openmp-13.0.0-darwin21-Release.tar.gz -C / | |
# ls /usr/local/lib | |
# ls /usr/local/include | |
# - name: Set up Python ${{ matrix.python-version }} | |
# uses: actions/setup-python@v5 | |
# with: | |
# python-version: ${{ matrix.python-version }} | |
# - name: Install dependencies | |
# run: | | |
# python -m pip install --upgrade pip | |
# python -m pip install pytest pytest-benchmark build | |
# python -m pip install numpy scipy matplotlib>=3.0.0 | |
# if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
# - name: Compile and install | |
# run: | | |
# export LDFLAGS="-L/usr/local/lib" | |
# export CPPFLAGS="-I/usr/local/include" | |
# python -m pip install . -v | |
# ls ${{ github.workspace }}/build || true | |
# - name: Test installation | |
# run : | | |
# mv dtaidistance dtaidistance_pkg | |
# python ./util/check_installation.py | |
# mv dtaidistance_pkg dtaidistance | |
# - name: Test with pytest | |
# run: | | |
# export LDFLAGS="-L/usr/local/lib" | |
# export CPPFLAGS="-I/usr/local/include" | |
# mv dtaidistance dtaidistance_pkg | |
# pytest --ignore=venv --benchmark-skip | |
# mv dtaidistance_pkg dtaidistance | |
# - name: Build | |
# run: | | |
# python -m build | |
# - name: Store wheels | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: wheels | |
# path: dist/*.whl | |
build_windows: | |
name: Build wheels on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
os: [windows-2019, windows-2022] | |
python-version: ["3.8","3.9","3.10", "3.11", "3.12"] | |
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 dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install pytest pytest-benchmark pytest-env build cython | |
python -m pip install numpy scipy matplotlib>=3.0.0 | |
- name: Compile and install | |
run: | | |
python -m pip install . -v | |
ls ${{ github.workspace }}/build || true | |
- name: Test installation | |
run : | | |
mv dtaidistance dtaidistance_pkg | |
python ./util/check_installation.py | |
mv dtaidistance_pkg dtaidistance | |
- name: Test with pytest | |
run: | | |
mv dtaidistance dtaidistance_pkg | |
pytest --ignore=venv --benchmark-skip -c pytest-noviz.ini | |
mv dtaidistance_pkg dtaidistance | |
- name: Build | |
run: | | |
python -m build | |
- name: Store wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels | |
path: dist/*.whl | |
build_sdist: | |
name: Prepare source distribution | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Build | |
run: | | |
python -m pip install build | |
python -m build --sdist | |
- name: Store artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels | |
path: dist/*.tar.gz | |
upload_wheels: | |
name: Upload wheels to PyPi | |
runs-on: ubuntu-latest | |
# upload to PyPI on every tag starting with 'v' | |
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') | |
needs: [build_unix,build_macos,build_windows,build_sdist] | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: wheels | |
path: dist | |
- name: Publish package to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
packages_dir: dist/ | |
# test_upload_wheels: | |
# name: Upload wheels to TestPyPi | |
# runs-on: ubuntu-latest | |
# # upload to PyPI on every tag starting with 'v' | |
# # if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') | |
# needs: [build_unix,build_macos,build_windows,build_sdist] | |
# # needs: [build_unix] | |
# steps: | |
# - uses: actions/download-artifact@v4 | |
# with: | |
# name: wheels | |
# path: dist | |
# - name: Publish package to TestPyPI | |
# uses: pypa/gh-action-pypi-publish@release/v1 | |
# with: | |
# user: __token__ | |
# password: ${{ secrets.TEST_PYPI_API_TOKEN_TEST }} | |
# repository_url: https://test.pypi.org/legacy/ | |