Files
vuln-oracle/.gitea/workflows/update.yml
T
2026-11-10 21:39:03 +01:00

60 lines
2.0 KiB
YAML

name: Oracle Security Mirror
on:
workflow_dispatch:
schedule:
- cron: "11 */6 * * *"
permissions:
contents: write
jobs:
mirror:
runs-on: vuln-runner
timeout-minutes: 180
steps:
- name: Synchronisieren im persistenten Git-Checkout
env:
GITEA_JOB_TOKEN: ${{ secrets.GITEA_TOKEN }}
CACHE_ROOT: /var/lib/act_runner/cache/vuln-oracle
REPO_URL: https://git.apex-project.de/VULN/vuln-oracle.git
shell: bash
run: |
set -Eeuo pipefail
umask 077
: "${GITEA_JOB_TOKEN:?GITEA_TOKEN fehlt oder ist leer}"
mkdir -p "$CACHE_ROOT"
exec 9>"$CACHE_ROOT/.sync.lock"
flock -w 300 9 || { echo 'Ein anderer Lauf ist noch aktiv' >&2; exit 1; }
ASKPASS_FILE=$(mktemp "$CACHE_ROOT/.askpass.XXXXXX")
trap 'rm -f "$ASKPASS_FILE"' EXIT
cat > "$ASKPASS_FILE" <<'SH'
#!/bin/sh
case "$1" in
*Username*) printf '%s\n' 'oauth2' ;;
*Password*) printf '%s\n' "$GITEA_JOB_TOKEN" ;;
*) exit 1 ;;
esac
SH
chmod 700 "$ASKPASS_FILE"
export GIT_ASKPASS="$ASKPASS_FILE" GIT_TERMINAL_PROMPT=0
if [ ! -d "$CACHE_ROOT/repo/.git" ]; then
git clone --depth 1 --branch main "$REPO_URL" "$CACHE_ROOT/repo"
fi
cd "$CACHE_ROOT/repo"
git remote set-url origin "$REPO_URL"
git fetch --depth 1 origin main
git reset --hard FETCH_HEAD
git clean -fd -- data state
python3 scripts/sync.py --since-year 2017
python3 scripts/validate.py
git config user.name 'Vulnerability Bot'
git config user.email 'vulnerability-bot@users.noreply.local'
git add -A data state
if git diff --cached --quiet; then
echo 'Keine Datenänderungen'
exit 0
fi
git commit -m "Update Oracle advisories $(date -u +%Y-%m-%dT%H:%M:%SZ)"
git push origin HEAD:main