Weekly Template Inspection #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: Weekly Template Inspection | |
| on: | |
| schedule: | |
| - cron: "0 0 * * 3" | |
| workflow_dispatch: | |
| inputs: | |
| templates: | |
| description: "Specific templates to inspect (comma-separated, leave empty for all)" | |
| required: false | |
| default: "" | |
| permissions: | |
| contents: read | |
| issues: write | |
| jobs: | |
| inspect-templates: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: "3.12" | |
| - name: Setup PDM | |
| uses: pdm-project/setup-pdm@v4 | |
| - name: Install dependencies | |
| run: pdm install -G dev | |
| - name: Set up Docker Compose | |
| run: | | |
| if ! command -v docker-compose &> /dev/null; then | |
| echo "Installing Docker Compose..." | |
| sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose | |
| sudo chmod +x /usr/local/bin/docker-compose | |
| fi | |
| docker --version | |
| docker-compose --version | |
| - name: Run template inspection | |
| run: | | |
| pdm run python scripts/inspect-templates.py --templates "${{ github.event.inputs.templates }}" --output template_inspection_results.json --verbose | |
| - name: Upload inspection results | |
| uses: actions/upload-artifact@v4 | |
| if: always() # Upload even if inspection fails | |
| with: | |
| name: template-inspection-results | |
| path: template_inspection_results.json | |
| retention-days: 30 | |
| - name: Create Issue on Failure | |
| if: failure() | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const fs = require('fs'); | |
| let resultsContent = "Inspection results not available."; | |
| try { | |
| const results = JSON.parse(fs.readFileSync('template_inspection_results.json', 'utf8')); | |
| resultsContent = `## 📊 Template Inspection Results | |
| **Inspection Date:** ${results.inspection_date} | |
| **Total Templates:** ${results.total_templates} | |
| **✅ Passed:** ${results.passed_templates} | |
| **❌ Failed:** ${results.failed_templates} | |
| ### Failed Templates: | |
| `; | |
| results.results.forEach(result => { | |
| if (!result.is_valid) { | |
| resultsContent += `\n#### ❌ ${result.template_name}\n`; | |
| if (result.errors && result.errors.length > 0) { | |
| resultsContent += "**Errors:**\n"; | |
| result.errors.forEach(error => { | |
| resultsContent += `- ${error}\n`; | |
| }); | |
| } | |
| if (result.warnings && result.warnings.length > 0) { | |
| resultsContent += "**Warnings:**\n"; | |
| result.warnings.forEach(warning => { | |
| resultsContent += `- ${warning}\n`; | |
| }); | |
| } | |
| } | |
| }); | |
| resultsContent += `\n---\n**Workflow:** [${context.workflow}](${context.payload.repository.html_url}/actions/runs/${context.runId})`; | |
| } catch (error) { | |
| resultsContent += `\nError reading results: ${error.message}`; | |
| } | |
| await github.rest.issues.create({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| title: `🚨 Weekly Template Inspection Failed - ${new Date().toISOString().split('T')[0]}`, | |
| body: resultsContent, | |
| labels: ['bug', 'template-inspection', 'automated'] | |
| }); | |
| - name: Comment on Success | |
| if: success() | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const fs = require('fs'); | |
| try { | |
| const results = JSON.parse(fs.readFileSync('template_inspection_results.json', 'utf8')); | |
| console.log(`✅ Weekly template inspection completed successfully!`); | |
| console.log(`📊 Results: ${results.passed_templates}/${results.total_templates} templates passed`); | |
| console.log(`📄 Detailed results available in workflow artifacts`); | |
| } catch (error) { | |
| console.log(`✅ Weekly template inspection completed successfully!`); | |
| console.log(`📄 Results available in workflow artifacts`); | |
| } |