UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

103 lines (89 loc) 3.59 kB
# AutoSnippet Guard CI/CD Check # Auto-generated by AutoSnippet. Do not edit manually. # Automatically runs Guard compliance checks on push and PR. # # Usage: Copy this file to your project's .github/workflows/ directory. name: AutoSnippet Guard Check on: push: branches: [main, develop] pull_request: branches: [main, develop] jobs: guard: runs-on: ubuntu-latest name: Guard Compliance Check steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '22' - name: Install AutoSnippet run: npm install -g autosnippet - name: Initialize workspace run: asd setup --dir . - name: Run Guard CI check id: guard-check continue-on-error: true run: | asd guard:ci . \ --report json \ --output guard-report.json \ --max-warnings 20 \ --min-score 70 - name: Upload Guard Report uses: actions/upload-artifact@v4 if: always() with: name: guard-report path: guard-report.json retention-days: 30 - name: Comment PR with results if: github.event_name == 'pull_request' && always() uses: actions/github-script@v7 with: script: | const fs = require('fs'); try { const report = JSON.parse(fs.readFileSync('guard-report.json', 'utf8')); const { qualityGate, summary } = report; const icon = qualityGate.status === 'PASS' ? '✅' : qualityGate.status === 'WARN' ? '⚠️' : '❌'; const body = [ `## ${icon} Guard Compliance Report`, '', `| Metric | Value |`, `|--------|-------|`, `| Quality Gate | ${qualityGate.status} (Score: ${qualityGate.score}/100) |`, `| Files Scanned | ${summary.filesScanned} |`, `| Errors | ${summary.errors} |`, `| Warnings | ${summary.warnings} |`, ].join('\n'); await github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body, }); } catch (err) { console.log('Could not post PR comment:', err.message); } - name: Evaluate Guard results if: always() run: | if [ ! -f guard-report.json ]; then echo "⚠️ Guard report not found, skipping evaluation" exit 0 fi STATUS=$(node -e "const r=JSON.parse(require('fs').readFileSync('guard-report.json','utf8'));console.log(r.qualityGate.status)") SCORE=$(node -e "const r=JSON.parse(require('fs').readFileSync('guard-report.json','utf8'));console.log(r.qualityGate.score)") ERRORS=$(node -e "const r=JSON.parse(require('fs').readFileSync('guard-report.json','utf8'));console.log(r.summary.errors)") WARNINGS=$(node -e "const r=JSON.parse(require('fs').readFileSync('guard-report.json','utf8'));console.log(r.summary.warnings)") echo "Quality Gate: $STATUS Score: $SCORE/100" echo "Errors: $ERRORS Warnings: $WARNINGS" if [ "$STATUS" = "FAIL" ]; then echo "❌ Quality Gate FAIL — see Guard report for details" exit 1 fi echo "✅ Quality Gate passed"