如何在GitHub Workflow中获取合并到main的最新PR分支名或编号?
获取合并到main分支的最后一个PR信息(分支名/编号)及Workflow实现方法
可以获取最后合并到main分支的PR对应的分支名称或PR编号,以下是两种在GitHub Workflow中实现的方法:
方法一:使用GitHub CLI(gh)
GitHub Hosted Runner默认预装了GitHub CLI,直接调用命令即可获取信息,步骤如下:
name: Fetch Last Merged PR Details on: workflow_dispatch # 可替换为你的触发事件(如pull_request、push等) jobs: fetch-pr-info: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Authenticate GitHub CLI run: echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token - name: Get last merged PR number id: pr-number run: | PR_NUM=$(gh pr list --base main --state merged --limit 1 --json number --jq '.[0].number') echo "pr_number=$PR_NUM" >> $GITHUB_OUTPUT - name: Get last merged PR branch name id: pr-branch run: | BRANCH_NAME=$(gh pr list --base main --state merged --limit 1 --json headRefName --jq '.[0].headRefName') echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT - name: Use fetched PR information run: | echo "Last merged PR number: ${{ steps.pr-number.outputs.pr_number }}" echo "Last merged PR branch: ${{ steps.pr-branch.outputs.branch_name }}"
方法二:调用GitHub REST API
如果不想依赖GitHub CLI,可直接通过REST API获取信息:
name: Fetch Last Merged PR via API on: workflow_dispatch jobs: fetch-pr-info: runs-on: ubuntu-latest steps: - name: Get last merged PR number id: pr-number run: | PR_NUM=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ "https://api.github.com/repos/${{ github.repository }}/pulls?base=main&state=closed&sort=updated&direction=desc&per_page=1" \ | jq '.[0].number') echo "pr_number=$PR_NUM" >> $GITHUB_OUTPUT - name: Get last merged PR branch name id: pr-branch run: | BRANCH_NAME=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ "https://api.github.com/repos/${{ github.repository }}/pulls?base=main&state=closed&sort=updated&direction=desc&per_page=1" \ | jq -r '.[0].head.ref') echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT - name: Output PR information run: | echo "Last merged PR number: ${{ steps.pr-number.outputs.pr_number }}" echo "Last merged PR branch: ${{ steps.pr-branch.outputs.branch_name }}"
注意事项
- 默认的
GITHUB_TOKEN已具备读取仓库PR信息的权限,无需额外创建密钥 - 私有仓库场景下,确保token拥有仓库的读取权限
- 两种方法均能满足需求,GitHub CLI更简洁,API方式则更灵活可控
内容的提问来源于stack exchange,提问作者Jayant Patil
相关产品推荐
相关产品推荐

