name: Weekly Health Report on: schedule: - cron: "0 9 * * 1" workflow_dispatch: jobs: health-check: runs-on: ubuntu-latest permissions: contents: read issues: write steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6 - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # ratchet:actions/setup-go@v6 with: go-version-file: go.mod - name: Build run: go build -o awesome-docker ./cmd/awesome-docker - name: Run Health Scoring run: ./awesome-docker health continue-on-error: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Generate Report id: report run: | ./awesome-docker report > health_report.txt 2>&1 || true if [ -s health_report.txt ]; then echo "has_report=true" >> "$GITHUB_OUTPUT" else echo "has_report=false" >> "$GITHUB_OUTPUT" fi - name: Create/Update Issue with Health Report if: steps.report.outputs.has_report == 'true' uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # ratchet:actions/github-script@v8 with: script: | const fs = require('fs'); const report = fs.readFileSync('health_report.txt', 'utf8'); const issueBody = report + '\n\n---\n*Auto-generated weekly by health_report.yml*'; const issues = await github.rest.issues.listForRepo({ owner: context.repo.owner, repo: context.repo.repo, state: 'open', labels: 'health-report', per_page: 1 }); if (issues.data.length > 0) { await github.rest.issues.update({ owner: context.repo.owner, repo: context.repo.repo, issue_number: issues.data[0].number, body: issueBody }); } else { await github.rest.issues.create({ owner: context.repo.owner, repo: context.repo.repo, title: 'Weekly Health Report - Repository Maintenance Needed', body: issueBody, labels: ['health-report', 'maintenance'] }); }