Fix release workflow (#893) #31
Workflow file for this run
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: Release | |
on: | |
push: | |
tags: | |
- '*.*.*' | |
workflow_dispatch: | |
jobs: | |
build: | |
name: Build on ${{ matrix.platform || matrix.os }} (${{ matrix.target }} - ${{ matrix.manylinux || 'auto' }}) | |
environment: release | |
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.9 3.10 3.11 3.12 3.13 pypy3.9 pypy3.10 | |
- os: windows | |
ls: dir | |
target: aarch64 | |
interpreter: 3.11 3.12 3.13 | |
- os: macos | |
target: aarch64 | |
interpreter: 3.9 3.10 3.11 3.12 3.13 pypy3.9 pypy3.10 | |
- os: ubuntu | |
platform: linux | |
target: aarch64 | |
# 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.9 3.10 3.11 3.12 3.13 | |
- os: ubuntu | |
platform: linux | |
target: s390x | |
interpreter: 3.9 3.10 3.11 3.12 3.13 | |
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.9 3.10 3.11 3.12 3.13 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@v4 | |
with: | |
name: dist-${{ matrix.os }}-${{ matrix.target }}-${{ matrix.manylinux }} | |
path: dist | |
build_sdist: | |
runs-on: ubuntu-latest | |
environment: release | |
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@v4 | |
with: | |
name: dist-sdist | |
path: dist | |
build_no_ext: | |
runs-on: ubuntu-latest | |
environment: release | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install and configure Poetry | |
run: pipx install poetry | |
- name: Hotswap build backend for Poetry | |
# Maturin doesn't support building no-extension wheels, so we swap to Poetry for that | |
run: | | |
sed -i -e '/^\[build-system\]/,/^\[/{s/^requires = .*/requires = ["poetry-core>=2.0.0,<3.0.0"]/; s/^build-backend = .*/build-backend = "poetry.core.masonry.api"/}' pyproject.toml | |
- name: Install dependencies | |
run: poetry install --only main --only test --only typing --only build | |
- name: Run poetry build | |
run: poetry build -f wheel | |
- name: Upload no-ext wheel | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dist-any | |
path: dist | |
Release: | |
needs: [ build, build_sdist, build_no_ext ] | |
if: success() | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
contents: write | |
environment: | |
name: pypi | |
url: https://pypi.org/project/pendulum/ | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: dist* | |
path: dist | |
merge-multiple: true | |
- 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 prerelease=true >> $GITHUB_OUTPUT | |
- name: Create Release | |
uses: ncipollo/release-action@v1 | |
with: | |
artifacts: "dist/*" | |
draft: false | |
prerelease: steps.check-version.outputs.prerelease == 'true' | |
body: "See CHANGELOG.md for details" | |
- name: Publish package distributions to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 |