diff --git a/.github/workflows/refresh-lockfile.yml b/.github/workflows/refresh-lockfile.yml index 7d2c9e45ef..a52d6f002f 100644 --- a/.github/workflows/refresh-lockfile.yml +++ b/.github/workflows/refresh-lockfile.yml @@ -54,10 +54,11 @@ jobs: id: upsert-pr env: GH_TOKEN: ${{ github.token }} + REPO_OWNER: ${{ github.repository_owner }} run: | if git diff --quiet -- pnpm-lock.yaml; then echo "Lockfile unchanged, nothing to do." - echo "pr_created=false" >> "$GITHUB_OUTPUT" + echo "pr_url=" >> "$GITHUB_OUTPUT" exit 0 fi @@ -70,28 +71,26 @@ jobs: git commit -m "chore(lockfile): refresh pnpm-lock.yaml" git push --force origin "$BRANCH" - # Create PR if one doesn't already exist - existing=$(gh pr list --head "$BRANCH" --json number --jq '.[0].number') - if [ -z "$existing" ]; then - gh pr create \ + # Only reuse an open PR from this repository owner, not a fork with the same branch name. + pr_url="$( + gh pr list --state open --head "$BRANCH" --json url,headRepositoryOwner \ + --jq ".[] | select(.headRepositoryOwner.login == \"$REPO_OWNER\") | .url" | + head -n 1 + )" + if [ -z "$pr_url" ]; then + pr_url="$(gh pr create \ --head "$BRANCH" \ --title "chore(lockfile): refresh pnpm-lock.yaml" \ - --body "Auto-generated lockfile refresh after dependencies changed on master. This PR only updates pnpm-lock.yaml." - echo "Created new PR." + --body "Auto-generated lockfile refresh after dependencies changed on master. This PR only updates pnpm-lock.yaml.")" + echo "Created new PR: $pr_url" else - echo "PR #$existing already exists, branch updated via force push." + echo "PR already exists: $pr_url" fi - echo "pr_created=true" >> "$GITHUB_OUTPUT" + echo "pr_url=$pr_url" >> "$GITHUB_OUTPUT" - name: Enable auto-merge for lockfile PR - if: steps.upsert-pr.outputs.pr_created == 'true' + if: steps.upsert-pr.outputs.pr_url != '' env: GH_TOKEN: ${{ github.token }} run: | - pr_url="$(gh pr list --head chore/refresh-lockfile --json url --jq '.[0].url')" - if [ -z "$pr_url" ]; then - echo "Error: lockfile PR was not found." >&2 - exit 1 - fi - - gh pr merge --auto --squash --delete-branch "$pr_url" + gh pr merge --auto --squash --delete-branch "${{ steps.upsert-pr.outputs.pr_url }}"