Skip to content

v0.1.2-rc2

v0.1.2-rc2 #47

name: Release Python Packages
on:
release:
types: [published]
push:
branches:
- main
- master
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.event.number || github.run_id }}
cancel-in-progress: true
jobs:
build-js-worker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '21'
cache: 'npm'
cache-dependency-path: bindings/javascript/lyric-js-worker/package-lock.json
- name: Install JS dependencies
working-directory: bindings/javascript/lyric-js-worker
run: npm ci
- name: Build JS worker
working-directory: bindings/javascript/lyric-js-worker
run: npm run build
- name: Upload JS worker
uses: actions/upload-artifact@v4
with:
name: js-worker-wasm
path: bindings/javascript/lyric-js-worker/javascript_worker.wasm
build-wheels:
needs: build-js-worker
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10.14", "3.11.8", "3.12.2"]
steps:
- uses: actions/checkout@v4
- name: Remove lyric-py directory
run: rm -rf bindings/python/lyric-py
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install Rye
uses: eifinger/setup-rye@v4
with:
enable-cache: true
working-directory: bindings/python
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Python version
working-directory: bindings/python
run: |
echo "${{ matrix.python-version }}" > .python-version
rye pin "${{ matrix.python-version }}"
rye sync --no-dev
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Install wasm-tools
run: |
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
cargo binstall -y wasm-tools
- uses: actions/download-artifact@v4
with:
name: js-worker-wasm
path: bindings/javascript/lyric-js-worker
- name: Build wheel packages
run: |
cd bindings/python
# Sync version
rye sync
rye run sync-version
# Build lyric-task wheel
cd lyric-task
rye sync --no-dev
rye build
# Build lyric-py-worker
cd ../lyric-py-worker
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r app-requirements.txt
pip install --force-reinstall ../dist/lyric_task-*.whl
cd src
# wasm-tools Can't strip fat wasm files in github actions
# componentize-py -d ./wit -w lyric-py-task componentize worker -o python_worker_fat.wasm
# wasm-tools print python_worker_fat.wasm | wasm-tools strip -a -o lyric_py_worker/python_worker.wasm
# rm python_worker_fat.wasm
componentize-py -d ./wit -w lyric-py-task componentize worker -o lyric_py_worker/python_worker.wasm
cd ..
rye sync --no-dev
rye build
# Build lyric-js-worker wheel
cd ../lyric-js-worker
mkdir -p src/lyric_js_worker/
cp ../../javascript/lyric-js-worker/javascript_worker.wasm src/lyric_js_worker/
rye sync --no-dev
rye build
- name: Upload wheel artifacts
uses: actions/upload-artifact@v4
with:
name: dist-wheels-py${{ matrix.python-version }}
path: |
bindings/python/dist/*.whl
build-sdist:
needs: build-js-worker
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Remove lyric-py directory
run: rm -rf bindings/python/lyric-py
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install Rye
uses: eifinger/setup-rye@v4
with:
enable-cache: true
working-directory: bindings/python
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build source distributions
run: |
cd bindings/python
# Sync version
rye sync
rye run sync-version
# Build lyric-task sdist
cd lyric-task
rye sync --no-dev
rye build --sdist
# Build lyric-py-worker sdist
cd ../lyric-py-worker
rye sync --no-dev
rye build --sdist
# Build lyric-js-worker sdist
cd ../lyric-js-worker
rye sync --no-dev
rye build --sdist
- name: Upload sdist artifacts
uses: actions/upload-artifact@v4
with:
name: dist-sdist
path: |
bindings/python/dist/*.tar.gz
test-packages:
needs: [build-wheels, build-sdist]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10.14", "3.11.8", "3.12.2"]
steps:
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Download wheel artifacts
uses: actions/download-artifact@v4
with:
name: dist-wheels-py${{ matrix.python-version }}
path: dist
- name: Test packages
run: |
python -m pip install --find-links=dist lyric-js-worker
# publish:
# needs: [test-packages]
# runs-on: ubuntu-latest
# if: github.event_name == 'release' && github.event.action == 'published'
# environment:
# name: pypi
# url: https://pypi.org/p/lyric-js-worker
# permissions:
# id-token: write
#
# steps:
# - name: Download all wheels
# uses: actions/download-artifact@v4
# with:
# pattern: dist-wheels-py*
# merge-multiple: true
# path: dist-wheels
#
# - name: Download sdist
# uses: actions/download-artifact@v4
# with:
# name: dist-sdist
# path: dist-sdist
#
# - name: Prepare dist directory
# run: |
# mkdir dist
# cp dist-wheels/* dist/
# cp dist-sdist/* dist/
#
# - name: Publish package distributions to PyPI
# uses: pypa/gh-action-pypi-publish@release/v1
# with:
# packages-dir: dist
# verbose: true
# user: __token__
# password: ${{ secrets.PYPI_API_TOKEN }}
publish:
needs: [test-packages]
runs-on: ubuntu-latest
if: github.event_name == 'release' && github.event.action == 'published'
environment:
name: pypi
url: https://pypi.org/p/lyric-js-worker
permissions:
id-token: write
steps:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
cache: 'pip'
- name: Download all wheels
uses: actions/download-artifact@v4
with:
pattern: dist-wheels-py*
merge-multiple: true
path: dist-wheels
- name: Download sdist
uses: actions/download-artifact@v4
with:
name: dist-sdist
path: dist-sdist
- name: Prepare dist directory
run: |
mkdir dist
cp dist-wheels/* dist/
cp dist-sdist/* dist/
- name: Install twine
run: |
python -m pip install --upgrade pip
python -m pip install twine
- name: Verify distributions
run: |
echo "Checking wheel contents:"
unzip -l dist/*.whl | grep wasm || true
echo "Running twine check:"
twine check dist/*
- name: Upload to PyPI
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
TWINE_REPOSITORY_URL: https://upload.pypi.org/legacy/
run: |
python -m twine upload \
--verbose \
--disable-progress-bar \
dist/*