diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml index c173718635..d048dd5298 100644 --- a/.github/workflows/build-pr.yml +++ b/.github/workflows/build-pr.yml @@ -1,9 +1,7 @@ name: Build PR Artifacts on: - push: - branches: - - main + workflow_dispatch: pull_request: branches: - main @@ -38,15 +36,17 @@ jobs: - name: Get PR Number id: get_pr_number run: | - echo "GRADIO_VERSION=$(python -c 'import requests;print(requests.get("https://pypi.org/pypi/gradio/json").json()["info"]["version"])')" >> $GITHUB_OUTPUT if ${{ github.event_name == 'pull_request' }}; then + echo "GRADIO_VERSION=$(python -c 'import requests;print(requests.get("https://pypi.org/pypi/gradio/json").json()["info"]["version"])')" >> $GITHUB_OUTPUT python -c "import os;print(os.environ['GITHUB_REF'].split('/')[2])" > pr_number.txt echo "PR_NUMBER=$(cat pr_number.txt)" >> $GITHUB_OUTPUT else + echo "GRADIO_VERSION=$(python -c 'import json; print(json.load(open("gradio/package.json"))["version"])')" >> $GITHUB_OUTPUT echo "PR_NUMBER='main'" >> $GITHUB_OUTPUT fi - name: Build pr package run: | + python -c 'import json; j = json.load(open("gradio/package.json")); j["version"] = "${{ steps.get_pr_number.outputs.GRADIO_VERSION }}"; json.dump(j, open("gradio/package.json", "w"))' pnpm i --frozen-lockfile --ignore-scripts pnpm build python3 -m build -w diff --git a/.github/workflows/deploy-pr-to-spaces.yml b/.github/workflows/deploy-pr-to-spaces.yml index bd9bac7c78..ccea12f12d 100644 --- a/.github/workflows/deploy-pr-to-spaces.yml +++ b/.github/workflows/deploy-pr-to-spaces.yml @@ -58,13 +58,15 @@ jobs: ${{ secrets.SPACES_DEPLOY_TOKEN }} \ --gradio-version ${{ steps.set-outputs.outputs.gradio_version }} > url.txt echo "SPACE_URL=$(cat url.txt)" >> $GITHUB_OUTPUT - - name: Upload website demos + - name: Upload Website Demos if: > - github.event.workflow_run.event == 'push' && + github.event.workflow_run.event == 'workflow_dispatch' && github.event.workflow_run.conclusion == 'success' + id: upload-website-demos run: | python scripts/upload_website_demos.py --AUTH_TOKEN ${{ secrets.SPACES_DEPLOY_TOKEN }} \ --WHEEL_URL https://gradio-builds.s3.amazonaws.com/${{ steps.set-outputs.outputs.gh_sha }}/ \ + --GRADIO_VERSION ${{ steps.set-outputs.outputs.gradio_version }} comment-spaces-success: uses: "./.github/workflows/comment-queue.yml" diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index ff3adcadc6..ae8c75a86a 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -54,4 +54,8 @@ jobs: user: __token__ passwords: | gradio:${{ secrets.PYPI_API_TOKEN }} - gradio_client:${{ secrets.PYPI_GRADIO_CLIENT_TOKEN }} \ No newline at end of file + gradio_client:${{ secrets.PYPI_GRADIO_CLIENT_TOKEN }} + - name: trigger spaces deploy workflow + env: + GITHUB_TOKEN: ${{ secrets.COMMENT_TOKEN }} + run: gh workflow run build-pr.yml \ No newline at end of file diff --git a/scripts/upload_website_demos.py b/scripts/upload_website_demos.py index 802ea96ee5..4757926731 100644 --- a/scripts/upload_website_demos.py +++ b/scripts/upload_website_demos.py @@ -11,13 +11,9 @@ import textwrap import huggingface_hub ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) -VERSION_FILE = os.path.abspath(os.path.join(ROOT, "gradio", "package.json")) DIR = os.path.dirname(__file__) GRADIO_DEMO_DIR = os.path.abspath(os.path.join(ROOT, "demo")) -with open(VERSION_FILE) as f: - version = json.load(f)["version"] - # Reasoning: # 1. all_demos includes all demos and is for testing PRs # 2. reset_components includes media files that are only present in all_demos (only for PRs) @@ -98,11 +94,12 @@ if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--WHEEL_URL", type=str, help="aws link to gradio wheel") parser.add_argument("--AUTH_TOKEN", type=str, help="huggingface auth token") + parser.add_argument("--GRADIO_VERSION", type=str, help="gradio version") args = parser.parse_args() - gradio_wheel_url = args.WHEEL_URL + f"gradio-{gradio_version}-py3-none-any.whl" + gradio_wheel_url = args.WHEEL_URL + f"gradio-{args.GRADIO_VERSION}-py3-none-any.whl" if args.AUTH_TOKEN is not None: hello_world_version = str(huggingface_hub.space_info("gradio/hello_world").cardData["sdk_version"]) for demo in demos: - if hello_world_version != gradio_version: - upload_demo_to_space(demo_name=demo, space_id="gradio/" + demo, hf_token=args.AUTH_TOKEN, gradio_version=gradio_version) - upload_demo_to_space(demo_name=demo, space_id="gradio/" + demo + "_main", hf_token=args.AUTH_TOKEN, gradio_version=gradio_version, gradio_wheel_url=gradio_wheel_url) + if hello_world_version != args.GRADIO_VERSION: + upload_demo_to_space(demo_name=demo, space_id="gradio/" + demo, hf_token=args.AUTH_TOKEN, gradio_version=args.GRADIO_VERSION) + upload_demo_to_space(demo_name=demo, space_id="gradio/" + demo + "_main", hf_token=args.AUTH_TOKEN, gradio_version=args.GRADIO_VERSION, gradio_wheel_url=gradio_wheel_url)