blob: 424d2b3e37529fff8e94d2652d745af6b58daf86 [file]
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
name: No PRs on main
on:
# Safe because this workflow does not check out code or run arbitrary scripts.
# It only checks the PR target branch and comments/fails if targeting main.
pull_request_target: # zizmor: ignore[dangerous-triggers]
types: [opened, synchronize, reopened, edited]
permissions: read-all
jobs:
reject-main-prs:
runs-on: ubuntu-latest
if: ${{ github.repository == 'flutter/flutter' }}
permissions:
contents: read
pull-requests: write
steps:
- name: Comment on PRs targeting main
if: github.base_ref == 'main'
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
github-token: ${{ github.token }}
script: |
const issueNumber = context.issue.number;
const comments = await github.paginate(github.rest.issues.listComments, {
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber,
});
const docUrl = 'https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request';
const alreadyCommented = comments.some(comment =>
comment.body && comment.body.includes(docUrl)
);
if (!alreadyCommented) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber,
body: 'This pull request targets the `main` branch, but the primary branch for this repository is `master`.\n\n' +
'Please change the base branch of this pull request to `master`.\n\n' +
`See: ${docUrl}`,
});
}
- name: Check base branch
env:
# Explicitly fallback to an empty string if it doesn't exist
TARGET_BRANCH: ${{ github.base_ref || ''}}
run: |
if [ "$TARGET_BRANCH" = "main" ]; then
echo "::error::Do not open PRs on \`main\`. The primary branch is \`master\`. You can change the base branch of this PR to \`master\`. See: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request"
exit 1
fi