Skip to content

Use Trusted Publishers #112

Use Trusted Publishers

Use Trusted Publishers #112

Workflow file for this run

name: Build and upload to PyPI
on:
push:
release:
types:
- published
jobs:
build_wheels:
name: Build wheels for cp${{ matrix.python }}-${{ matrix.platform_id }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
# Windows
- os: windows-2019
python: 38
bitness: 64
platform_id: win_amd64
- os: windows-2019
python: 39
bitness: 64
platform_id: win_amd64
- os: windows-2019
python: 310
bitness: 64
platform_id: win_amd64
- os: windows-2019
python: 311
bitness: 64
platform_id: win_amd64
- os: windows-2019
python: 312
bitness: 64
platform_id: win_amd64
# Linux
- os: ubuntu-latest
python: 38
bitness: 64
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
- os: ubuntu-latest
python: 39
bitness: 64
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
- os: ubuntu-latest
python: 310
bitness: 64
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
- os: ubuntu-latest
python: 311
bitness: 64
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
- os: ubuntu-latest
python: 312
bitness: 64
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
# MacOS x86_64
- os: macos-latest
bitness: 64
python: 38
platform_id: macosx_x86_64
- os: macos-latest
bitness: 64
python: 39
platform_id: macosx_x86_64
- os: macos-latest
bitness: 64
python: 310
platform_id: macosx_x86_64
- os: macos-latest
bitness: 64
python: 311
platform_id: macosx_x86_64
- os: macos-latest
bitness: 64
python: 312
platform_id: macosx_x86_64
# macOS arm64
- os: macos-latest
bitness: 64
python: 39
platform_id: macosx_arm64
- os: macos-latest
bitness: 64
python: 310
platform_id: macosx_arm64
- os: macos-latest
bitness: 64
python: 311
platform_id: macosx_arm64
- os: macos-latest
bitness: 64
python: 312
platform_id: macosx_arm64
steps:
- uses: actions/checkout@v4
- name: Get history and tags for SCM versioning to work
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- uses: actions/setup-python@v5
name: Install Python
with:
python-version: '3.9'
- name: Install cibuildwheel
run: pip install cibuildwheel==2.16.2
- name: Prepare for Windows
if: runner.os == 'Windows'
run: |
Invoke-WebRequest -OutFile kytea-win-x64.zip https://github.com/chezou/kytea/releases/download/0.4.7-3/kytea-win-x64.zip &&
7z x kytea-win-x64.zip -okytea &&
cp -r kytea\include include &&
cp kytea\lib\libkytea.lib lib\kytea\
- name: Build wheels
if: runner.os != 'macOS'
env:
CIBW_BUILD: cp${{ matrix.python }}-${{ matrix.platform_id }}
CIBW_ARCHS: all
CIBW_BUILD_VERBOSITY: 3
CIBW_BEFORE_ALL_LINUX: >
yum install -y wget &&
wget http://www.phontron.com/kytea/download/kytea-0.4.7.tar.gz &&
tar zxf kytea-0.4.7.tar.gz &&
pushd kytea-0.4.7 &&
autoreconf -i &&
./configure && make && make install &&
ldconfig &&
popd &&
rm -r kytea-0.4.7 &&
swig -Wall -c++ -python -shadow -I/usr/local/include lib/kytea/mykytea.i
CIBW_BEFORE_ALL_MACOS: >
brew install kytea &&
swig -Wall -c++ -python -shadow -I$(brew --prefix)/include lib/kytea/mykytea.i
run: python -m cibuildwheel --output-dir wheelhouse
- name: Build wheels if macOS
if: runner.os == 'macOS'
env:
CIBW_BUILD: cp${{ matrix.python }}-${{ matrix.platform_id }}
CIBW_REPAIR_WHEEL_COMMAND_MACOS: >
delocate-listdeps {wheel} &&
delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel}
CIBW_PLATFORM: macos
CIBW_BUILD_VERBOSITY: 3
run: .github/workflows/macos-build.sh
- uses: actions/upload-artifact@v4
with:
name: artifact-${{ matrix.python }}-${{ matrix.platform_id }}
path: ./wheelhouse/*.whl
build_sdist:
name: Build source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Get history and tags for SCM versioning to work
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- uses: actions/setup-python@v5
name: Install Python
with:
python-version: '3.9'
- name: Build sdist
run: pip install setuptools_scm && python setup.py sdist
- uses: actions/upload-artifact@v4
with:
name: artifact-source
path: dist/*.tar.gz
upload_pypi:
needs: [build_wheels, build_sdist]
runs-on: ubuntu-latest
environment: release
permissions:
id-token: write
if: github.event_name == 'release' && github.event.action == 'published'
steps:
- uses: actions/download-artifact@v4
with:
pattern: artifact-*
merge-multiple: true
path: dist
- uses: pypa/gh-action-pypi-publish@release/v1