Skip to content

VirusTotal ISO Scan

VirusTotal ISO Scan #7

Workflow file for this run

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