mirror of
https://github.com/gradio-app/gradio.git
synced 2025-03-19 12:00:39 +08:00
Prevent race conditions when deploying website demos (#5480)
* wait for deploy to pypi * read correct version for main deploys * fixes * rework * use workflow dispatch * fix build-pr
This commit is contained in:
parent
acdeff57ec
commit
0be1e51f4f
8
.github/workflows/build-pr.yml
vendored
8
.github/workflows/build-pr.yml
vendored
@ -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
|
||||
|
6
.github/workflows/deploy-pr-to-spaces.yml
vendored
6
.github/workflows/deploy-pr-to-spaces.yml
vendored
@ -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"
|
||||
|
6
.github/workflows/publish-npm.yml
vendored
6
.github/workflows/publish-npm.yml
vendored
@ -54,4 +54,8 @@ jobs:
|
||||
user: __token__
|
||||
passwords: |
|
||||
gradio:${{ secrets.PYPI_API_TOKEN }}
|
||||
gradio_client:${{ secrets.PYPI_GRADIO_CLIENT_TOKEN }}
|
||||
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
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user