PyPI Release #9
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: PyPI Release | |
on: | |
workflow_dispatch: | |
inputs: | |
publish_package: | |
description: 'Publish to PyPi? [true/false]' | |
required: true | |
default: 'false' | |
jobs: | |
build: | |
if: github.repository == 'invoke-ai/InvokeAI' | |
runs-on: ubuntu-22.04 | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} | |
TWINE_NON_INTERACTIVE: 1 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node 18 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '18' | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v2 | |
with: | |
version: '8.12.1' | |
- name: Install frontend dependencies | |
run: pnpm install --prefer-frozen-lockfile | |
working-directory: invokeai/frontend/web | |
- name: Build frontend | |
run: pnpm run build | |
working-directory: invokeai/frontend/web | |
- name: Install python dependencies | |
run: pip install --upgrade build twine | |
- name: Build python package | |
run: python3 -m build | |
- name: Upload build artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dist | |
path: dist | |
- name: Check distribution | |
run: twine check dist/* | |
- name: Check PyPI versions | |
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/') | |
run: | | |
pip install --upgrade requests | |
python -c "\ | |
import scripts.pypi_helper; \ | |
EXISTS=scripts.pypi_helper.local_on_pypi(); \ | |
print(f'PACKAGE_EXISTS={EXISTS}')" >> $GITHUB_ENV | |
- name: Upload package | |
if: env.PACKAGE_EXISTS == 'False' && env.TWINE_PASSWORD != '' && github.event.inputs.publish_package == 'true' | |
run: twine upload dist/* |