Files
awesome-copilot/.github/workflows/check-pr-target.yml
T
Aaron Powell 0eb6062f94 chore(phase2): retarget all automation and contributor guidance from staged to main (#2122)
* chore(phase2): retarget all automation from staged to main

- publish.yml: trigger on main, publish only to marketplace
- check-pr-target.yml: invert — now blocks PRs targeting staged, welcomes main
- 10 PR validation workflows: branches [staged] → [main]
- external-plugin-command-router.yml: --base staged → main (3×), message text
- external-plugin-rereview-command.yml: --base staged → main (2×), message text
- external-plugin-rereview.yml: staged reference in review comment text
- external-plugin-intake.yml: ref: staged checkout → main
- external-plugin-pr-quality-gates.yml: ref: staged checkout → main
- external-plugin-quality-gates.yml: ref: staged checkout → main
- check-plugin-structure.yml: error messages updated for new branch model
- contributors.yml: ref and base target → main
- setup-labels.yml: targets-main label description updated
- cli-for-beginners-sync.md + .lock.yml: base-branch staged → main
- codeowner-update.md + .lock.yml: base-branch staged → main
- learning-hub-updater.md + .lock.yml: base-branch staged → main

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs(phase2): update contributor guidance from staged to main

- CONTRIBUTING.md: branch from main, PR targets main; remove Phase 2 gate note
- AGENTS.md: PR target + external plugin PR automation references
- .github/pull_request_template.md: PR checklist targets main
- website/src/content/docs/learning-hub/agentic-workflows.md: PR target

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* aw updates

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 14:36:53 +10:00

81 lines
2.7 KiB
YAML

name: Check PR Target Branch
on:
pull_request_target:
types: [opened, edited, reopened, synchronize]
concurrency:
group: check-pr-target-${{ github.event.pull_request.number }}
cancel-in-progress: true
permissions:
pull-requests: write
jobs:
check-target:
runs-on: ubuntu-latest
steps:
- name: Reject PR targeting staged
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
with:
script: |
const pull = context.payload.pull_request;
const owner = context.repo.owner;
const repo = context.repo.repo;
const pullNumber = context.issue.number;
const botLogin = 'github-actions[bot]';
const { data: reviews } = await github.rest.pulls.listReviews({
owner,
repo,
pull_number: pullNumber,
per_page: 100
});
const latestBotReview = reviews
.filter((review) => review.user?.login === botLogin)
.sort((a, b) => new Date(a.submitted_at ?? a.created_at) - new Date(b.submitted_at ?? b.created_at))
.at(-1);
const latestBotState = latestBotReview?.state;
if (pull.base.ref === 'staged') {
if (latestBotState !== 'CHANGES_REQUESTED') {
const requestChangesBody = [
'⚠️ **This PR targets `staged`, but PRs should target `main`.**',
'',
'The `staged` branch is no longer the contributor branch.',
'Please change the base branch to `main`.',
'',
'You can change the base branch using the **Edit** button at the top of this PR,',
'or run: `gh pr edit ${{ github.event.pull_request.number }} --base main`'
].join('\n');
await github.rest.pulls.createReview({
owner,
repo,
pull_number: pullNumber,
event: 'REQUEST_CHANGES',
body: requestChangesBody
});
}
return;
}
if (latestBotState === 'CHANGES_REQUESTED') {
const approveBody = [
'✅ Base branch is now set correctly.',
'',
'Removing the prior block because this PR no longer targets `staged`.'
].join('\n');
await github.rest.pulls.createReview({
owner,
repo,
pull_number: pullNumber,
event: 'APPROVE',
body: approveBody
});
}