Skip to content

Pre-release version bumps and changelog update (#936) #34

Pre-release version bumps and changelog update (#936)

Pre-release version bumps and changelog update (#936) #34

Workflow file for this run

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 3.14 pypy3.9 pypy3.10
- os: windows
ls: dir
target: aarch64
interpreter: 3.11 3.12 3.13 3.14
- os: macos
target: aarch64
interpreter: 3.9 3.10 3.11 3.12 3.13 3.14 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 3.14
- os: ubuntu
platform: linux
target: s390x
interpreter: 3.9 3.10 3.11 3.12 3.13 3.14
runs-on: ${{ matrix.os }}-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: set up python
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: '3.11'
architecture: ${{ matrix.python-architecture || 'x64' }}
- name: build wheels
uses: PyO3/maturin-action@86b9d133d34bc1b40018696f782949dac11bd380 # v1.49.4
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@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: dist-${{ matrix.os }}-${{ matrix.target }}-${{ matrix.manylinux }}
path: dist
build_sdist:
runs-on: ubuntu-latest
environment: release
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Build sdist
uses: PyO3/maturin-action@86b9d133d34bc1b40018696f782949dac11bd380 # v1.49.4
with:
command: sdist
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: dist-sdist
path: dist
build_no_ext:
runs-on: ubuntu-latest
environment: release
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- 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@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Download artifacts
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
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@b7eabc95ff50cbeeedec83973935c8f306dfcd0b # v1.20.0
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@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0