diff --git a/.github/workflows/sync-lmsys-sglang-blogs.yml b/.github/workflows/sync-lmsys-sglang-blogs.yml index e68acdb15..704e88c36 100644 --- a/.github/workflows/sync-lmsys-sglang-blogs.yml +++ b/.github/workflows/sync-lmsys-sglang-blogs.yml @@ -7,9 +7,11 @@ on: permissions: contents: write + pull-requests: write jobs: sync: + if: github.repository == 'sgl-project/sglang' && github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - name: Check out repository @@ -25,16 +27,34 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: python docs_new/scripts/update_lmsys_sglang_blogs.py - - name: Commit and push changes + - name: Open or update pull request + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | + set -euo pipefail + if git diff --quiet -- docs_new/index.mdx; then - echo "No blog card changes to commit." + echo "No blog card changes; nothing to do." exit 0 fi + BRANCH="auto/lmsys-blog-cards" git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" + + # Recreate the bot branch as "current main + card diff" and overwrite + # any previous state, so the PR always shows a clean single-commit diff. + git checkout -B "$BRANCH" git add docs_new/index.mdx - git diff --cached --quiet && exit 0 git commit -m "docs: sync LMSYS SGLang blog cards" - git push + git push --force origin "$BRANCH" + + # Open a PR only if one is not already open for this branch; otherwise + # the force-push above has already updated the existing PR in place. + if [ -z "$(gh pr list --head "$BRANCH" --base main --state open --json number --jq '.[].number')" ]; then + gh pr create \ + --base main \ + --head "$BRANCH" \ + --title "docs: sync LMSYS SGLang blog cards" \ + --body 'Automated sync of the LMSYS SGLang blog cards in `docs_new/index.mdx`, opened by the `Sync LMSYS SGLang blogs` workflow.' + fi