Github操作:如果PR已经存在,则停止该操作



我正在通过GitHub操作创建自动PR,所以每当dev分支上发生新的推送时。自动创建从devmaster的PR

我想更改:如果已经存在PR(master<-dev(,则无需运行此操作,那么我如何检查是否已经存在PR?

Github Action

name: Pull Request Action
on:
push:
branches: ['dev']
jobs:
create-pull-request:
runs-on: ubuntu-latest
steps:
- name: Create Pull Request
uses: actions/github-script@v6
with:
script: |
const { repo, owner } = context.repo;
const result = await github.rest.pulls.create({
title: 'Master Sync : Auto Generated PR',
owner,
repo,
head: '${{ github.ref_name }}',
base: 'master',
body: [
'This PR is auto-generated by',
'[actions/github-script](https://github.com/actions/github-script).'
].join('n')
});
github.rest.issues.addLabels({
owner,
repo,
issue_number: result.data.number,
labels: ['feature', 'automated pr']
});

没有任何条件可以直接在作业本身的if步骤中使用,但您可以使用GitHub CLI查看是否已经存在这样的PR,然后提前退出:

steps:
- name: Check if PR exists
id: check
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
prs=$(gh pr list 
--repo "$GITHUB_REPOSITORY" 
--json baseRefName,headRefName 
--jq '
map(select(.baseRefName == "master" and .headRefName == "dev"))
| length
')
if ((prs > 0)); then
echo "skip=true" >> "$GITHUB_OUTPUT"
fi
- name: Create pull request
if: '!steps.check.outputs.skip'
# ...

最新更新