Skip to content

Cherry-pick web assistant to dev/0.2 (#259) #13

Cherry-pick web assistant to dev/0.2 (#259)

Cherry-pick web assistant to dev/0.2 (#259) #13

Workflow file for this run

name: Upload PyPI And Release
on:
push:
tags:
- "v*"
workflow_dispatch:
env:
POETRY_VERSION: "1.8.3"
PYTHON_VERSION: "3.10.9"
jobs:
build-n-publish:
name: Build and publish to PyPI
if: github.repository == 'LazyAGI/LazyLLM'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: Set up python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: ${{ env.POETRY_VERSION }}
- name: Extract tag from ref
id: extract_tag
run: echo "TAG=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV
- name: Update version in pyproject.toml
run: |
sed -i "s/^version = \".*\"/version = \"$TAG\"/" pyproject.toml
echo $TAG
env:
TAG: ${{ env.TAG }}
- name: Install deps
shell: bash
run: pip install -e .
- name: Test import
working-directory: /tmp
shell: bash
run: python -c "import lazyllm"
- name: Copy files
shell: bash
run: cp LazyLLM-Env/poetry.lock . && cp pyproject.toml lazyllm/
- name: Build doc
run: |
set -ex
export PYTHONPATH=$PWD:$PYTHONPATH
pip install -r requirements.txt
pip install -r docs/requirements.txt
python docs/add_docstrings.py
- name: Clean cache
shell: bash
run: |
pip cache purge
pip freeze | grep -v "^-e" | xargs pip uninstall -y
- name: Check PyPI for existing version
id: pypi_check
run: |
VERSION=$(poetry version -s)
PACKAGE_NAME=$(poetry version | awk '{print $1}')
RESPONSE=$(curl -s https://pypi.org/pypi/$PACKAGE_NAME/json)
if echo "$RESPONSE" | jq -e ".releases | has(\"$VERSION\")"; then
echo "Version $VERSION already exists on PyPI. Skipping publish."
echo "pypi_version_exists=true" >> $GITHUB_ENV
else
echo "Version $VERSION does not exist on PyPI. Proceeding with publish."
echo "pypi_version_exists=false" >> $GITHUB_ENV
fi
- name: Build and publish to pypi
if: env.pypi_version_exists == 'false'
uses: JRubics/poetry-publish@v1.17
with:
pypi_token: ${{ secrets.LazyLLM_INDEX_PYPI_TOKEN }}
ignore_dev_requirements: "yes"
- name: Skip publish
if: env.pypi_version_exists == 'true'
shell: bash
run: echo "Skip publish"
- name: Check if GitHub Release exists
id: release_check
run: |
RELEASE_TAG=${GITHUB_REF#refs/tags/}
RELEASES=$(curl -H "Authorization: token ${{ secrets.PERSONAL_GITHUB_TOKEN }}" -s https://api.github.com/repos/${GITHUB_REPOSITORY}/releases)
if echo "$RELEASES" | jq -e ".[] | select(.tag_name == \"$RELEASE_TAG\")" > /dev/null; then
echo "Release $RELEASE_TAG already exists. Skipping release creation."
echo "release_exists=true" >> $GITHUB_ENV
UPLOAD_URL=$(echo "$RELEASES" | jq -r ".[] | select(.tag_name == \"$RELEASE_TAG\") | .upload_url")
echo "upload_url=$UPLOAD_URL" >> $GITHUB_ENV
else
echo "Release $RELEASE_TAG does not exist. Proceeding with release creation."
echo "release_exists=false" >> $GITHUB_ENV
fi
- name: Create GitHub Release
if: env.release_exists == 'false'
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: false
prerelease: false
- name: Set upload_url for new release
if: env.release_exists == 'false'
run: echo "upload_url=${{ steps.create_release.outputs.upload_url }}" >> $GITHUB_ENV
- name: Get Asset name
run: |
export PKG=$(ls dist/ | grep tar)
set -- $PKG
echo "name=$1" >> $GITHUB_ENV
- name: Upload Release Asset (sdist) to GitHub
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
with:
upload_url: ${{ env.upload_url }}
asset_path: dist/${{ env.name }}
asset_name: ${{ env.name }}
asset_content_type: application/zip