name: RDC-DME Metric Sync Check on: schedule: - cron: '23 9 * * 1' # Weekly on Monday at 9:23 UTC workflow_dispatch: pull_request: paths: - 'projects/rdc/include/rdc/rdc.h' - 'projects/rdc/tools/dme_rdc_metric_mapping.json' - 'projects/rdc/tools/dme_rdc_metric_sync_check.py' jobs: sync-check: runs-on: ubuntu-latest steps: - name: Checkout rocm-systems uses: actions/checkout@v4 with: sparse-checkout: | projects/rdc/include/rdc/rdc.h projects/rdc/tools/ sparse-checkout-cone-mode: false - name: Checkout device-metrics-exporter uses: actions/checkout@v4 with: repository: ROCm/device-metrics-exporter path: dme-upstream sparse-checkout: | pkg/ internal/ cmd/ - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - name: Run sync check id: sync-check run: | python3 projects/rdc/tools/dme_rdc_metric_sync_check.py \ --rdc-header projects/rdc/include/rdc/rdc.h \ --mapping projects/rdc/tools/dme_rdc_metric_mapping.json \ --dme-path dme-upstream \ --output sync-report.json - name: Upload report if: always() uses: actions/upload-artifact@v4 with: name: dme-rdc-sync-report path: sync-report.json - name: Create issue on failure if: failure() && github.event_name == 'schedule' uses: actions/github-script@v7 with: script: | const fs = require('fs'); const report = JSON.parse(fs.readFileSync('sync-report.json', 'utf8')); const unmapped = report.unmapped_dme_metrics || []; const stale = report.stale_mappings || []; let body = '## DME-RDC Metric Sync Gap Detected\n\n'; body += `RDC fields: ${report.rdc_field_count}\n`; body += `Mapped: ${report.mapped}, Skipped: ${report.skipped}\n\n`; if (unmapped.length > 0) { body += '### New Unmapped DME Metrics\n\n'; unmapped.forEach(m => { body += `- \`${m}\`\n`; }); } if (stale.length > 0) { body += '\n### Stale Mappings\n\n'; stale.forEach(s => { body += `- \`${s.dme}\` -> \`${s.rdc}\`: ${s.issue}\n`; }); } body += '\n---\nGenerated by RDC-DME Sync Check workflow.'; await github.rest.issues.create({ owner: context.repo.owner, repo: context.repo.repo, title: '[RDC] DME metric sync gap detected', body: body, labels: ['rdc', 'metrics'] });