S-Dreamer's picture
Upload 3 files
4f25455 verified
name: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
permissions:
contents: read
jobs:
test-and-secure:
runs-on: ubuntu-latest
env:
ALLOW_DEV_SALT: "true"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Cache pip dependencies
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install pytest ruff bandit pip-audit
- name: Lint with Ruff
run: ruff check .
- name: Check formatting with Ruff
run: ruff format --check .
- name: Security scan with Bandit
run: |
bandit -r osint_core/ -ll
- name: Audit Python dependencies
run: |
pip-audit -r requirements.txt
- name: Run tests
run: |
pytest -v --tb=short
drift-guard:
runs-on: ubuntu-latest
needs: test-and-secure
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Install YAML parser
run: |
python -m pip install --upgrade pip
python -m pip install PyYAML
- name: Verify critical files exist
run: |
test -f osint_core/intent.py
test -f osint_core/policy.py
test -f osint_core/validators.py
- name: Prevent forbidden tools from entering repo
run: |
if git grep -n -I -E "nmap|masscan|sqlmap|metasploit" -- . \
':(exclude).github/workflows/*' \
':(exclude)README.md' \
':(exclude)docs/*'; then
echo "Forbidden tooling detected"
exit 1
fi
- name: Enforce passive-first invariant
run: |
if git grep -n -I "requests.get(" -- osint_core/ | grep -v "authorized"; then
echo "Potential unauthorized outbound request"
exit 1
fi
- name: Validate YAML integrity
run: |
python -c "import yaml; yaml.safe_load(open('data/sources.yaml', encoding='utf-8'))"
- name: Check for raw indicator leakage
run: |
if git grep -n -I -E "example\.com|@gmail\.com|192\.168\." -- osint_core/; then
echo "Possible raw indicator leakage"
exit 1
fi