add pypi-release.yml and pypi-helper.py

This commit is contained in:
mauwii 2023-02-04 22:58:21 +01:00
parent 3b58413d9f
commit 536d534ab4
No known key found for this signature in database
GPG Key ID: D923DB04ADB3F5AB
2 changed files with 71 additions and 0 deletions

44
.github/workflows/pypi-release.yml vendored Normal file
View File

@ -0,0 +1,44 @@
name: PyPI Release
on:
push:
branches:
- "dev/ci/add-pypi-release"
paths:
- 'ldm/invoke/_version.py'
workflow_dispatch:
jobs:
release:
runs-on: ubuntu-22.04
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
TWINE_NON_INTERACTIVE: 1
steps:
- name: checkout sources
uses: actions/checkout@v3
- name: install deps
run: pip install --upgrade build twine
- name: build package
run: python3 -m build
- name: check distribution
run: twine check dist/*
- name: check PyPI versions
# if: github.ref == 'refs/heads/main'
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: just for debugging
run: echo $PACKAGE_EXISTS
# - name: upload package
# if: env.PACKAGE_EXISTS == 'False'
# run: twine upload dist/*

27
scripts/pypi-helper.py Normal file
View File

@ -0,0 +1,27 @@
import requests as request
import ldm.invoke._version as version
local_version = str(version.__version__)
def get_pypi_versions(package_name="InvokeAI") -> list[str]:
"""Get the versions of the package from PyPI"""
url = f"https://pypi.org/pypi/{package_name}/json"
response = request.get(url).json()
versions: list[str] = list(response["releases"].keys())
return versions
def local_on_pypi(package_name="InvokeAI", local_version=local_version) -> bool:
"""Compare the versions of the package from PyPI and the local package"""
pypi_versions = get_pypi_versions(package_name)
return local_version in pypi_versions
if __name__ == "__main__":
package_name = "InvokeAI"
if local_on_pypi():
print(f"Package {package_name} is up to date")
else:
print(f"Package {package_name} is not up to date")