diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index de1c66b..008fc32 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -7,18 +7,16 @@ on: jobs: test: - name: Build docs + name: Build docs runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - with: - submodules: true - - name: Set up Python 3.11 + - name: Set up Python 3.12 uses: actions/setup-python@v5 with: - python-version: 3.11 + python-version: 3.12 cache: 'pip' - name: Install Python dependencies @@ -34,7 +32,8 @@ jobs: touch ./docs/_build/html/.nojekyll - name: GH Pages Deployment - uses: JamesIves/github-pages-deploy-action@4.1.3 + if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') + uses: JamesIves/github-pages-deploy-action@v4 with: branch: gh-pages # The branch the action should deploy to. folder: ./docs/_build/html diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index bdbd3d9..7f87a6d 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -6,110 +6,30 @@ on: - "*" jobs: - build_linux_x86_64: - name: Build wheels for linux x86_64 - runs-on: ubuntu-latest + build_wheels: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + # macos-13 is an intel runner, higher macos's are apple silicon + # At some point, maybe get this to work on windows-latest + os: [ubuntu-latest, macos-13, macos-latest] + steps: - - name: Check out repository - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Build wheels - uses: pypa/cibuildwheel@v2.16.2 + uses: pypa/cibuildwheel@v2.22.0 env: - CIBW_ARCHS: x86_64 + CIBW_ARCHS_LINUX: x86_64 # remove this later so we build for all linux archs CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9" CIBW_MANYLINUX_X86_64_IMAGE: ghcr.io/artifactdb/prebuilt-hdf5/manylinux_x86_64:0.0.4 CIBW_MUSLLINUX_X86_64_IMAGE: ghcr.io/artifactdb/prebuilt-hdf5/musllinux_x86_64:0.0.4 CIBW_SKIP: pp* - - uses: actions/upload-artifact@v3 - with: - path: ./wheelhouse/*.whl - - build_macosx_x86_64: - name: Build wheels for macosx x86_64 - runs-on: macos-13 - steps: - - name: Check out repository - uses: actions/checkout@v4 - - - name: Grab prebuilt dependencies - run: | - curl -L https://github.com/ArtifactDB/prebuilt-hdf5/releases/download/0.0.4/macosx_x86_64.tar.gz > bundle.tar.gz - tar -xvf bundle.tar.gz - - - name: Build wheels - uses: pypa/cibuildwheel@v2.16.2 - env: - CIBW_ARCHS: x86_64 - CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9" - CIBW_ENVIRONMENT: "MORE_CMAKE_OPTIONS=\"-DCMAKE_INSTALL_PREFIX=$(pwd)/installed -DCMAKE_OSX_ARCHITECTURES=x86_64\"" - CIBW_BUILD_VERBOSITY: 3 - CIBW_SKIP: pp* - MACOSX_DEPLOYMENT_TARGET: 11.7 - - - uses: actions/upload-artifact@v3 - with: - path: ./wheelhouse/*.whl - - build_macosx_arm64: - name: Build wheels for macosx arm64 - runs-on: macos-13 - steps: - - name: Check out repository - uses: actions/checkout@v4 - - - name: Grab prebuilt dependencies - run: | - curl -L https://github.com/ArtifactDB/prebuilt-hdf5/releases/download/0.0.4-manual/macosx_arm64.tar.gz > bundle.tar.gz - tar -xvf bundle.tar.gz - - - name: Build wheels - uses: pypa/cibuildwheel@v2.16.2 - env: - CIBW_ARCHS: arm64 - CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9" - CIBW_ENVIRONMENT: "MORE_CMAKE_OPTIONS=\"-DCMAKE_INSTALL_PREFIX=$(pwd)/installed -DCMAKE_OSX_ARCHITECTURES=arm64\"" - CIBW_BUILD_VERBOSITY: 3 - MACOSX_DEPLOYMENT_TARGET: 13.0 - - - uses: actions/upload-artifact@v3 - with: - path: ./wheelhouse/*.whl - -# build_windows_x86_64: -# name: Build wheels for windows x86_64 -# runs-on: windows-2019 -# steps: -# - name: Check out repository -# uses: actions/checkout@v4 -# -# - name: Grab prebuilt dependencies -# run: | -# curl -L https://github.com/ArtifactDB/prebuilt-hdf5/releases/download/0.0.4/windows_x86_64.tar.gz > bundle.tar.gz -# tar -xvf bundle.tar.gz -# shell: bash -# -# - name: Store path -# run: | -# $wd = pwd -# echo "INSTALL_DIR=$wd\\installed" >> $env:GITHUB_ENV -# shell: powershell -# -# - name: Build wheels -# uses: pypa/cibuildwheel@v2.16.2 -# env: -# CIBW_ARCHS: AMD64 -# CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9" -# CIBW_ENVIRONMENT: "MORE_CMAKE_OPTIONS=\"-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}\" VERBOSE=1" -# CIBW_BEFORE_BUILD_WINDOWS: "pip install delvewheel" -# CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -w {dest_dir} {wheel}" -# CIBW_TEST_EXTRAS: "testing" -# CIBW_TEST_COMMAND: "pytest {package}/tests" -# CIBW_BUILD_VERBOSITY: 3 - - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: + name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} path: ./wheelhouse/*.whl build_sdist: @@ -123,24 +43,22 @@ jobs: - name: Build sdist run: pipx run build --sdist - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: + name: cibw-sdist path: dist/*.tar.gz upload_pypi: - needs: [build_linux_x86_64, build_macosx_x86_64, build_macosx_arm64, build_sdist] + needs: [build_wheels, build_sdist] runs-on: ubuntu-latest - # upload to PyPI on every tag starting with 'v' - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') steps: - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: - # unpacks default artifact into dist/ - # if `name: artifact` is omitted, the action will create extra parent dir - name: artifact + pattern: cibw-* path: dist + merge-multiple: true - - uses: pypa/gh-action-pypi-publish@v1.8.3 + - uses: pypa/gh-action-pypi-publish@v1.12.2 with: user: __token__ password: ${{ secrets.PYPI_PASSWORD }} diff --git a/.github/workflows/pypi-test.yml b/.github/workflows/pypi-test.yml index d8596af..347c983 100644 --- a/.github/workflows/pypi-test.yml +++ b/.github/workflows/pypi-test.yml @@ -1,14 +1,13 @@ -name: Run unit tests +name: Test the library on: push: - branches: [ master ] + branches: + - master pull_request: - branches: [ master ] jobs: test: - runs-on: ubuntu-latest strategy: matrix: @@ -20,32 +19,16 @@ jobs: with: submodules: true - - name: Set up Python ${{ matrix.python-version }} + - name: Setup Python uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: 'pip' - - name: Install Python dependencies - run: | - python -m pip install --upgrade pip setuptools - DEPENDENCIES=$(python -c 'from setuptools.config.setupcfg import read_configuration as c; a = c("setup.cfg"); print(" ".join(a["options"]["install_requires"][1:] + a["options"]["extras_require"]["testing"][1:]))') - pip install ${DEPENDENCIES} pybind11 + - name: Get latest CMake + uses: lukka/get-cmake@latest - # We do proper tests if we're on the master branch, or if we're creating a new release. - name: Test with tox - if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') run: | pip install tox - tox - - # Otherwise we do some cached builds and tests for faster merging of PRs. - - name: Set up ccache - if: github.ref != 'refs/heads/master' && !startsWith(github.ref, 'refs/tags') - uses: hendrikmuhs/ccache-action@v1.2 - - - name: Quickly build and test - if: github.ref != 'refs/heads/master' && !startsWith(github.ref, 'refs/tags') - run: | - CC="ccache gcc" python setup.py install - pytest + tox \ No newline at end of file