bump version (#54) #36
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: 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 | |
if: github.ref_type == 'tag' || github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'Full Build') | |
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: i686 } | |
- { 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 } | |
# windows | |
- { os: windows, target: i686, python-architecture: x86 } | |
runs-on: ${{ (matrix.os == 'linux' && 'ubuntu') || matrix.os }}-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.13' | |
architecture: ${{ matrix.python-architecture || 'x64' }} | |
- run: pip install twine | |
- 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 | |
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 | |
fi | |
- run: ${{ (matrix.os == 'windows' && 'dir') || 'ls -lh' }} dist/ | |
- run: twine check --strict dist/* | |
- 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 | |
if: github.ref_type == 'tag' || github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'Full Build') | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.13' | |
- uses: PyO3/maturin-action@v1 | |
with: | |
command: sdist | |
args: --out dist | |
rust-toolchain: stable | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: pypi-files-sdist | |
path: dist | |
inspect: | |
needs: [build, build-sdist] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: pypi-files-* | |
merge-multiple: true | |
path: dist/ | |
- run: ls -lh dist/ | |
# TODO: some more checks? `twine` is already run above | |
# 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@v4 | |
- uses: actions/setup-python@v5 | |
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 | |
repository-url: https://test.pypi.org/legacy/ | |
- uses: ncipollo/release-action@v1 | |
with: | |
name: ${{ needs.version.outputs.version }} | |
prerelease: ${{ needs.version.outputs.is_prerelease }} |