name: Release on: push: tags: - '*.*.*' workflow_dispatch: jobs: build: name: Build on ${{ matrix.platform || matrix.os }} (${{ matrix.target }} - ${{ matrix.manylinux || 'auto' }}) strategy: fail-fast: false matrix: os: [ubuntu, macos, windows] target: [x86_64, aarch64] manylinux: [auto] include: - os: ubuntu platform: linux - os: windows ls: dir interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 pypy3.8 pypy3.9 pypy3.10 - os: windows ls: dir target: aarch64 interpreter: 3.11 3.12 - os: macos target: aarch64 interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 pypy3.8 pypy3.9 pypy3.10 - os: ubuntu platform: linux target: aarch64 # mimalloc not supported on manylinux2014 cross-compile container extra-build-args: --no-default-features # musllinux - os: ubuntu platform: linux target: x86_64 manylinux: musllinux_1_1 - os: ubuntu platform: linux target: aarch64 manylinux: musllinux_1_1 - os: ubuntu platform: linux target: ppc64le interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 # mimalloc not supported on manylinux2014 cross-compile container extra-build-args: --no-default-features - os: ubuntu platform: linux target: s390x interpreter: 3.7 3.8 3.9 3.10 3.11 3.12 # mimalloc not supported on manylinux2014 cross-compile container extra-build-args: --no-default-features runs-on: ${{ matrix.os }}-latest steps: - uses: actions/checkout@v4 - name: set up python uses: actions/setup-python@v4 with: python-version: '3.11' architecture: ${{ matrix.python-architecture || 'x64' }} - name: build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} manylinux: ${{ matrix.manylinux || 'auto' }} container: ${{ matrix.container }} args: --release --out dist --interpreter ${{ matrix.interpreter || '3.7 3.8 3.9 3.10 3.11 3.12 pypy3.7 pypy3.8 pypy3.9 pypy3.10' }} ${{ matrix.extra-build-args }} rust-toolchain: stable docker-options: -e CI - run: ${{ matrix.ls || 'ls -lh' }} dist/ - uses: actions/upload-artifact@v3 with: name: dist path: dist build_sdist: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Build sdist uses: PyO3/maturin-action@v1 with: command: sdist args: --out dist - name: Upload sdist uses: actions/upload-artifact@v3 with: name: dist path: dist Release: needs: [ build, build_sdist ] if: success() && startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Download artifacts uses: actions/download-artifact@v3 with: name: dist path: dist - name: Install Poetry run: | curl -fsS https://install.python-poetry.org | python - -y - name: Update PATH run: echo "$HOME/.local/bin" >> $GITHUB_PATH - name: Check distributions run: | ls -la dist - name: Check Version id: check-version run: | [[ "${GITHUB_REF#refs/tags/}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] \ || echo ::set-output name=prerelease::true - name: Create Release uses: ncipollo/release-action@v1 with: artifacts: "dist/*" token: ${{ secrets.GITHUB_TOKEN }} draft: false prerelease: steps.check-version.outputs.prerelease == 'true' - name: Publish to PyPI env: POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }} run: | poetry publish