mirror of
https://github.com/HuangYuChuh/ComfyUI_Skills_OpenClaw.git
synced 2026-07-30 03:23:40 +00:00
125 lines
3.6 KiB
YAML
125 lines
3.6 KiB
YAML
name: Sync Frontend
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
repository_dispatch:
|
|
types:
|
|
- frontend_release_published
|
|
|
|
concurrency:
|
|
group: sync-frontend
|
|
cancel-in-progress: false
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
sync:
|
|
name: Download & Sync
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: main
|
|
token: ${{ secrets.MAIN_REPO_TOKEN }}
|
|
|
|
- name: Download latest frontend dist
|
|
run: |
|
|
gh release download latest \
|
|
--repo HuangYuChuh/ComfyUI_Skills_OpenClaw-frontend \
|
|
--pattern "frontend-dist.tar.gz" \
|
|
--output frontend-dist.tar.gz
|
|
env:
|
|
GH_TOKEN: ${{ secrets.MAIN_REPO_TOKEN }}
|
|
|
|
- name: Extract dist to ui/static
|
|
run: |
|
|
rm -rf ui/static/assets ui/static/index.html
|
|
mkdir -p ui/static
|
|
tar -xzf frontend-dist.tar.gz -C ui/static
|
|
|
|
- name: Read frontend version
|
|
id: version
|
|
run: |
|
|
FRONTEND_SHA=$(python - <<'PY'
|
|
import json
|
|
from pathlib import Path
|
|
|
|
version = json.loads(Path("ui/static/version.json").read_text(encoding="utf-8"))
|
|
print(version.get("commit", "").strip())
|
|
PY
|
|
)
|
|
|
|
if [ -z "$FRONTEND_SHA" ]; then
|
|
echo "Failed to read commit from ui/static/version.json" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "full_sha=$FRONTEND_SHA" >> "$GITHUB_OUTPUT"
|
|
echo "short_sha=${FRONTEND_SHA:0:8}" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Check for changes
|
|
id: diff
|
|
run: |
|
|
git add ui/static/
|
|
if git diff --cached --quiet; then
|
|
echo "changed=false" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "changed=true" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Commit, open PR and enable auto-merge
|
|
if: steps.diff.outputs.changed == 'true'
|
|
env:
|
|
GH_TOKEN: ${{ secrets.MAIN_REPO_TOKEN }}
|
|
FRONTEND_SHA: ${{ steps.version.outputs.full_sha }}
|
|
FRONTEND_SHORT_SHA: ${{ steps.version.outputs.short_sha }}
|
|
run: |
|
|
retry() {
|
|
local attempts=$1
|
|
shift
|
|
local n=1
|
|
while true; do
|
|
if "$@"; then
|
|
return 0
|
|
fi
|
|
if [ "$n" -ge "$attempts" ]; then
|
|
return 1
|
|
fi
|
|
n=$((n + 1))
|
|
sleep 3
|
|
done
|
|
}
|
|
|
|
git config user.name "github-actions[bot]"
|
|
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
|
|
BRANCH="build/frontend-${FRONTEND_SHORT_SHA}"
|
|
git checkout -B "$BRANCH"
|
|
git commit -m "build(ui): sync frontend assets from upstream@${FRONTEND_SHORT_SHA}"
|
|
git push --force-with-lease origin "$BRANCH"
|
|
|
|
PR_URL=""
|
|
if ! PR_URL=$(retry 3 gh pr create \
|
|
--title "build(ui): sync frontend assets from upstream@${FRONTEND_SHORT_SHA}" \
|
|
--body "Auto-generated by \`sync-frontend\` workflow for frontend commit \`${FRONTEND_SHA}\`." \
|
|
--base main); then
|
|
PR_URL=$(gh pr list \
|
|
--head "$BRANCH" \
|
|
--base main \
|
|
--state open \
|
|
--json url \
|
|
--jq '.[0].url')
|
|
fi
|
|
|
|
if [ -z "$PR_URL" ]; then
|
|
echo "Failed to create or find pull request for $BRANCH" >&2
|
|
exit 1
|
|
fi
|
|
|
|
retry 3 gh pr merge "$PR_URL" --auto --squash
|
|
|
|
- name: No changes
|
|
if: steps.diff.outputs.changed == 'false'
|
|
run: echo "Frontend is already up to date. Nothing to sync."
|