Audit Providers #8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Audit Providers | |
| on: | |
| schedule: | |
| # Weekly, Mondays 06:00 UTC | |
| - cron: '0 6 * * 1' | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| jobs: | |
| audit: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: lts/* | |
| # test.php gates recovered providers during the sync (see scripts/audit.js). | |
| - name: Setup PHP with PECL extension | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.0' | |
| extensions: yaml | |
| - run: npm install --ignore-scripts | |
| # Audits providers/ and providers-disabled/, moves confirmed-broken | |
| # providers out and recovered ones back, and refreshes AUDIT.md. | |
| - name: Audit and sync providers | |
| run: npm run audit:sync | |
| # Enabled set may have changed, so rebuild the published registry. | |
| - name: Rebuild providers.json | |
| run: npm run build | |
| # A run that moves nothing still rewrites AUDIT.md to the runner's vantage | |
| # (a datacenter IP can't see past Cloudflare, so counts wobble). That diff is | |
| # noise, so only open a PR when a provider .yml actually crossed the | |
| # enabled/disabled line — a rename shows up as a delete + an untracked add. | |
| - name: Detect provider moves | |
| id: moves | |
| run: | | |
| if [ -n "$(git status --porcelain -- providers providers-disabled | grep -E '\.yml$')" ]; then | |
| echo "changed=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "changed=false" >> "$GITHUB_OUTPUT" | |
| echo "No provider moves — skipping PR." | |
| fi | |
| - name: Open pull request | |
| if: steps.moves.outputs.changed == 'true' | |
| uses: peter-evans/create-pull-request@v7 | |
| with: | |
| branch: chore/audit-sync | |
| title: 'chore: sync provider registry from audit' | |
| commit-message: 'chore: sync provider registry from audit' | |
| body: | | |
| Automated weekly audit run. | |
| - Confirmed-broken providers moved to `providers-disabled/`. | |
| - Recovered providers moved back to `providers/`. | |
| - `AUDIT.md` and `providers.json` refreshed. | |
| Review the moved files before merging — `INCONCLUSIVE` providers are left untouched. | |
| labels: automation | |
| delete-branch: true |