我正在通过GitHub操作创建自动PR,所以每当dev
分支上发生新的推送时。自动创建从dev
到master
的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'
# ...