VirusTotal ISO Scan #7
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: VirusTotal ISO Scan | |
| on: | |
| schedule: | |
| # Weekly Wednesday scan — keeps us at ~40-50 VT requests/month | |
| # Free tier: 500/day, ~15k/month — this uses <1% of monthly quota | |
| - cron: "0 6 * * 3" | |
| workflow_dispatch: | |
| inputs: | |
| max_scans: | |
| description: Max ISOs to scan (free tier = 500/day, ~15k/month) | |
| required: true | |
| default: "10" | |
| type: choice | |
| options: | |
| - "5" | |
| - "10" | |
| - "25" | |
| - "50" | |
| - "100" | |
| permissions: | |
| contents: read | |
| jobs: | |
| vt-scan: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| - name: Install Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| # Output is tee'd to scan-report.txt so the report step below has | |
| # something real to attach. The script emits ::error:: annotations and | |
| # exits 1 on any malicious detection (which fails this job). | |
| - name: Run VirusTotal URL scan | |
| id: scan | |
| env: | |
| VIRUSTOTAL_API_KEY: ${{ secrets.VIRUSTOTAL_API_KEY }} | |
| MAX_VT_SCANS: ${{ inputs.max_scans || '10' }} | |
| WORKER_URL: "https://acreetionos.org/api" | |
| run: | | |
| echo "::group::VirusTotal Scan" | |
| python3 scripts/scan-isos.py 2>&1 | tee scan-report.txt | |
| echo "::endgroup::" | |
| - name: Upload scan report | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: virustotal-scan-report | |
| path: scan-report.txt | |
| if-no-files-found: ignore | |
| retention-days: 30 |