## Summary Implements forge cleanup tools and documentation as requested in issue #1128. ## Changes - scripts/cleanup-duplicate-prs.sh: Automated duplicate PR detection - docs/forge-cleanup-analysis.md: Analysis of duplicate PRs - docs/forge-cleanup-report.md: Cleanup report with metrics - .github/workflows/pr-duplicate-check.yml: Weekly automated checks Issue: #1128
70 lines
2.0 KiB
YAML
70 lines
2.0 KiB
YAML
name: Duplicate PR Detection
|
|
|
|
on:
|
|
schedule:
|
|
# Run weekly on Monday at 9 AM UTC
|
|
- cron: '0 9 * * 1'
|
|
workflow_dispatch: # Allow manual trigger
|
|
pull_request:
|
|
types: [opened, reopened]
|
|
|
|
jobs:
|
|
check-duplicates:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y jq curl
|
|
|
|
- name: Check for duplicate PRs
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
|
GITEA_URL: ${{ secrets.GITEA_URL || 'https://forge.alexanderwhitestone.com' }}
|
|
REPO: ${{ github.repository }}
|
|
run: |
|
|
chmod +x ./scripts/cleanup-duplicate-prs.sh
|
|
./scripts/cleanup-duplicate-prs.sh --dry-run
|
|
|
|
- name: Create issue if duplicates found
|
|
if: failure()
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const title = 'Duplicate PRs Detected';
|
|
const body = `## Duplicate PRs Found
|
|
|
|
The duplicate PR detection workflow found potential duplicate PRs.
|
|
|
|
**Action Required:**
|
|
1. Review the duplicate PRs
|
|
2. Close older duplicates
|
|
3. Keep the newest PR for each issue
|
|
|
|
**Workflow Run:** ${context.runId}
|
|
**Repository:** ${context.repo.owner}/${context.repo.repo}
|
|
|
|
This issue was automatically created by the duplicate PR detection workflow.`;
|
|
|
|
await github.rest.issues.create({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
title,
|
|
body,
|
|
labels: ['maintenance', 'automated']
|
|
});
|
|
|
|
# Notify on manual trigger
|
|
notify:
|
|
needs: check-duplicates
|
|
if: github.event_name == 'workflow_dispatch'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Send notification
|
|
run: |
|
|
echo "Duplicate PR check completed"
|
|
echo "Check the workflow run for details"
|