Files
2026-11-10 20:55:39 +01:00

72 lines
2.6 KiB
YAML

name: vuln-exploits Synchronisation (lokaler Git-Cache)
on:
schedule:
- cron: "15 16 * * *"
workflow_dispatch:
permissions:
contents: write
concurrency:
group: vuln-exploits-sync
cancel-in-progress: false
jobs:
mirror:
runs-on: vuln-runner
timeout-minutes: 360
steps:
- name: Rohdaten aktualisieren
shell: bash
env:
GITEA_JOB_TOKEN: ${{ secrets.GITEA_TOKEN }}
CACHE_ROOT: /var/lib/act_runner/cache/vuln-exploits
run: |
set -Eeuo pipefail
umask 077
: "${GITEA_JOB_TOKEN:?GITEA_TOKEN fehlt}"
mkdir -p "$CACHE_ROOT"
exec 9>"$CACHE_ROOT/.sync.lock"
flock -w 300 9 || { echo "Bereits ein Lauf aktiv" >&2; exit 1; }
ASKPASS="$(mktemp "$CACHE_ROOT/.askpass.XXXXXX")"
trap 'rm -f "$ASKPASS"' EXIT
cat > "$ASKPASS" <<'ASKPASS_SCRIPT'
#!/bin/sh
case "$1" in
*Username*|*username*) printf '%s\n' 'oauth2' ;;
*Password*|*password*) printf '%s\n' "$GITEA_JOB_TOKEN" ;;
*) exit 1 ;;
esac
ASKPASS_SCRIPT
chmod 700 "$ASKPASS"
export GIT_ASKPASS="$ASKPASS" GIT_TERMINAL_PROMPT=0
REMOTE="https://git.apex-project.de/VULN/vuln-exploits.git"
REPO="$CACHE_ROOT/repo"
if [ ! -d "$REPO/.git" ]; then
[ ! -e "$REPO" ] || { echo "Unvollstaendiger Cache: $REPO" >&2; exit 1; }
git -c credential.helper= clone --branch main --single-branch --depth 1 "$REMOTE" "$REPO"
else
# Never reset an unfinished local commit or changes after a failed push.
if [ -n "$(git -C "$REPO" status --porcelain)" ] || [ "$(git -C "$REPO" rev-list --count origin/main..HEAD)" != 0 ]; then
echo "Lokale Aenderungen/Commits vorhanden: manuell pruefen, nicht ueberschreiben" >&2
exit 1
fi
git -C "$REPO" remote set-url origin "$REMOTE"
git -C "$REPO" -c credential.helper= fetch --no-tags --depth 1 origin main
git -C "$REPO" checkout -B main FETCH_HEAD
fi
cd "$REPO"
python3 scripts/sync.py
python3 scripts/validate.py
git config user.name "Vulnerability Bot"
git config user.email "vuln-bot@users.noreply.local"
git add -A -- data/ state/
if git diff --cached --quiet; then
echo "Keine neuen Daten"
exit 0
fi
git commit -m "vuln-exploits update $(date -u +%Y-%m-%dT%H:%M:%SZ)"
git -c credential.helper= push origin HEAD:main