All checks were successful
Docker Build Smart Logic / Build amd64 & arm64 (push) Successful in 1s
54 lines
1.7 KiB
Bash
54 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
# Datei für den Status
|
|
STATE_FILE="watch_state.json"
|
|
# Liste der zu prüfenden Quellen (Typ|Name|Zusatz)
|
|
# Formate:
|
|
# DOCKER|user/repo|tag
|
|
# GITHUB|user/repo|branch
|
|
TARGETS=(
|
|
"DOCKER|library/ubuntu|latest"
|
|
"DOCKER|grafana/grafana|9.5.0"
|
|
"GITHUB|docker/cli|master"
|
|
"GITHUB|torvalds/linux|master"
|
|
)
|
|
|
|
# Falls jq nicht installiert ist
|
|
if ! command -v jq &> /dev/null; then echo "Bitte 'jq' installieren!"; exit 1; fi
|
|
|
|
# Initialisiere State-Datei falls nicht vorhanden
|
|
if [ ! -f "$STATE_FILE" ]; then echo "{}" > "$STATE_FILE"; fi
|
|
|
|
for entry in "${TARGETS[@]}"; do
|
|
IFS="|" read -r TYPE REPO EXTRA <<< "$entry"
|
|
|
|
KEY="${TYPE}_${REPO//[\/\.]/_}_${EXTRA}"
|
|
OLD_VAL=$(jq -r ".${KEY} // empty" "$STATE_FILE")
|
|
NEW_VAL=""
|
|
|
|
if [ "$TYPE" == "DOCKER" ]; then
|
|
# Holt das letzte Update-Datum vom Docker Hub
|
|
NEW_VAL=$(curl -s "https://hub.docker.com/v2/repositories/${REPO}/tags/${EXTRA}" | jq -r '.last_updated // empty')
|
|
elif [ "$TYPE" == "GITHUB" ]; then
|
|
# Holt den neuesten Commit-SHA vom GitHub Branch
|
|
NEW_VAL=$(curl -s "https://api.github.com/repos/${REPO}/branches/${EXTRA}" | jq -r '.commit.sha // empty')
|
|
fi
|
|
|
|
if [ -z "$NEW_VAL" ] || [ "$NEW_VAL" == "null" ]; then
|
|
echo "Fehler: Konnte Daten für $REPO ($EXTRA) nicht abrufen."
|
|
continue
|
|
fi
|
|
|
|
if [ -n "$OLD_VAL" ] && [ "$OLD_VAL" != "$NEW_VAL" ]; then
|
|
echo "🔔 UPDATE GEFUNDEN: $REPO ($EXTRA)"
|
|
echo " Alt: $OLD_VAL"
|
|
echo " Neu: $NEW_VAL"
|
|
# HIER: Befehl für E-Mail oder Push-Dienst einfügen
|
|
else
|
|
echo "✅ $REPO ($EXTRA) ist aktuell."
|
|
fi
|
|
|
|
# Status aktualisieren
|
|
TEMP_JSON=$(jq ".${KEY} = \"$NEW_VAL\"" "$STATE_FILE")
|
|
echo "$TEMP_JSON" > "$STATE_FILE"
|
|
done |