Publish to PyPI.org(CPU) #8
Workflow file for this run
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: Publish to PyPI.org | |
on: | |
schedule: | |
- cron: '0 20 * * *' # GMT 20 == GMT+8 04 | |
workflow_dispatch: | |
inputs: | |
version: | |
description: 'The version to release (e.g. v0.8.0), or leave it empty for nightly build' | |
type: string | |
required: false | |
jobs: | |
# Define test jobs as part of the publish workflow | |
build_and_test_linux: | |
name: Build and Test on Linux | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip cache purge | |
python -m pip install --upgrade pip setuptools --no-cache-dir | |
python -m pip install -r requirements-dev.txt --no-cache-dir | |
python -m pip install setuptools==68.2.0 | |
- name: Build Wheel | |
run: python setup.py bdist_wheel | |
- name: Archive Wheel Artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: dist-linux | |
path: dist/*.whl | |
retention-days: 20 | |
- name: Test with pytest | |
run: | | |
pip install dist/*.whl | |
pytest tests/ | |
build_and_test_macos: | |
name: Build and Test on macOS | |
runs-on: macos-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip cache purge | |
python -m pip install --upgrade pip setuptools --no-cache-dir | |
python -m pip install -r requirements-dev.txt --no-cache-dir | |
python -m pip install setuptools==68.2.0 | |
pip install cibuildwheel | |
- name: Build Wheel | |
run: | | |
sh copy_pyproject_mac_arm64.sh | |
cibuildwheel --platform macos | |
cp wheelhouse/*.whl dist/ | |
- name: Archive Wheel Artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: dist-macos | |
path: dist/*.whl | |
retention-days: 20 | |
- name: Test with pytest | |
run: | | |
pip install dist/*.whl | |
pytest tests/ | |
build_and_test_windows: | |
name: Build and Test on Windows | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip cache purge | |
python -m pip install --upgrade pip setuptools --no-cache-dir | |
python -m pip install -r requirements-dev.txt --no-cache-dir | |
python -m pip install setuptools==68.2.0 | |
- name: Build Wheel | |
run: python setup.py bdist_wheel | |
- name: Archive Wheel Artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: dist-macos | |
path: dist/*.whl | |
retention-days: 20 | |
- name: Test with pytest | |
run: | | |
$whl = Get-ChildItem -Path dist -Filter *.whl | Select-Object -First 1 | |
if ($whl) { pip install $whl.FullName } | |
else { Write-Error "No wheel file found in dist directory" } | |
pytest tests/ | |
publish_pypi: | |
name: Upload release to PyPI | |
runs-on: ubuntu-latest | |
needs: [build_and_test_linux, build_and_test_macos, build_and_test_windows] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download Artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: dist-linux | |
path: dist/linux/ | |
- name: Download macOS Artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: dist-macos | |
path: dist/macos/ | |
- name: Download Windows Artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: dist-windows | |
path: dist/windows/ | |
- name: Publish to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
password: ${{ secrets.PYPI_API_TOKEN }} |