[pre-commit.ci] pre-commit autoupdate (#141) #356
This file contains hidden or 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: cd | |
| on: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - '**' | |
| pull_request: | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| build: | |
| name: build on ${{ matrix.os }} (${{ matrix.target }}${{ matrix.os == 'linux' && format(' - {0}', matrix.manylinux == 'auto' && 'manylinux' || matrix.manylinux) || '' }}) | |
| # only run on push to tags, main branch, or explicit full build | |
| # keep condition in sync with `build-sdist` job | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [linux, macos, windows] | |
| target: [x86_64, aarch64] | |
| manylinux: ['2_28'] | |
| include: | |
| # manylinux for various platforms | |
| - { os: linux, manylinux: '2_28', target: armv7 } | |
| - { os: linux, manylinux: '2_28', target: ppc64le } | |
| #- { os: linux, manylinux: '2_28', target: s390x } | |
| # musl | |
| - { os: linux, manylinux: musllinux_1_2, target: x86_64 } | |
| - { os: linux, manylinux: musllinux_1_2, target: aarch64 } | |
| - { os: linux, manylinux: musllinux_1_2, target: armv7 } | |
| exclude: | |
| # Fails with “LINK : fatal error LNK1181: cannot open input file 'python3.lib'” | |
| - os: windows | |
| target: aarch64 | |
| runs-on: ${{ (matrix.os == 'linux' && 'ubuntu') || matrix.os }}-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.13' | |
| architecture: ${{ matrix.python-architecture || 'x64' }} | |
| - run: pipx install twine abi3audit | |
| - uses: PyO3/maturin-action@v1 | |
| with: | |
| target: ${{ matrix.target }} | |
| manylinux: ${{ matrix.manylinux }} | |
| args: --release --out dist --interpreter '3.11 3.12 3.13' | |
| rust-toolchain: stable | |
| docker-options: -e CI | |
| maturin-version: 1.9.4 | |
| before-script-linux: | | |
| # If we're running on rhel centos, install needed packages. | |
| if command -v yum &> /dev/null; then | |
| yum update -y && yum install -y perl-core | |
| # https://github.com/PyO3/maturin-action/discussions/152 | |
| if [[ "${{ matrix.os }}" == "linux" && "${{ matrix.target }}" == "x86_64" && "${{ matrix.manylinux }}" == "2_28" ]]; then | |
| yum update -y && yum install -y clang | |
| fi | |
| fi | |
| - run: ${{ (matrix.os == 'windows' && 'dir') || 'ls -lh' }} dist/ | |
| - run: twine check --strict dist/* | |
| - run: abi3audit dist/*.whl | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: pypi-files-${{ matrix.os }}-${{ matrix.target }}-${{ matrix.manylinux }} | |
| path: dist | |
| build-sdist: | |
| name: build sdist | |
| # keep condition in sync with `build` job | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.13' | |
| - uses: PyO3/maturin-action@v1 | |
| with: | |
| # https://github.com/PyO3/maturin/issues/2336#issuecomment-2507418846 | |
| maturin-version: 1.7.4 | |
| command: sdist | |
| args: --out dist | |
| rust-toolchain: stable | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: pypi-files-sdist | |
| path: dist | |
| inspect: | |
| if: always() | |
| needs: [build, build-sdist] | |
| runs-on: ubuntu-latest | |
| steps: | |
| # https://github.com/re-actors/alls-green#why | |
| - uses: re-actors/alls-green@release/v1 | |
| with: | |
| jobs: ${{ toJSON(needs) }} | |
| - uses: actions/download-artifact@v5 | |
| with: | |
| pattern: pypi-files-* | |
| merge-multiple: true | |
| path: dist/ | |
| - run: ls -lh dist/ | |
| # If git tag is a version, verify that it matches the package metadata version (or fail job and skip `publish`) | |
| # If git tag is not a version, set output `version` to "" (also skipping `publish`) | |
| version: | |
| if: github.ref_type == 'tag' && startsWith(github.ref_name, 'v') | |
| needs: build | |
| outputs: | |
| version: ${{ steps.version.outputs.version }} | |
| is_prerelease: ${{ steps.version.outputs.is_prerelease }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.13' | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: pypi-files-linux-x86_64-2_28 | |
| path: dist/ | |
| - name: Install zarrs-python | |
| run: pip install packaging dist/*manylinux_2_28_x86_64.whl | |
| - name: Get zarrs-python version and tag | |
| id: version | |
| run: python .github/workflows/version-cmp.py | |
| publish: | |
| if: needs.version.outputs.version != '' | |
| runs-on: ubuntu-latest | |
| needs: [inspect, version] | |
| environment: pypi | |
| permissions: | |
| contents: write # to create a github release | |
| id-token: write # to authenticate as Trusted Publisher to pypi.org | |
| steps: | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| pattern: pypi-files-* | |
| merge-multiple: true | |
| path: dist/ | |
| - name: "Publishing version ${{ needs.version.outputs.version }}" | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| packages-dir: dist/ | |
| verbose: true | |
| - uses: ncipollo/release-action@v1 | |
| with: | |
| name: ${{ needs.version.outputs.version }} | |
| prerelease: ${{ needs.version.outputs.is_prerelease }} | |
| generateReleaseNotes: true |