Test new version wf

This commit is contained in:
Michel Roegl-Brunner 2025-04-10 15:25:34 +02:00
parent 84ad6b86ee
commit d7daf851b9
3 changed files with 283 additions and 0 deletions

View File

@ -0,0 +1,76 @@
name: Crawl Versions from newreleases.io
on:
workflow_dispatch:
schedule:
# Runs at 12:00 AM and 12:00 PM UTC
- cron: "0 0,12 * * *"
permissions:
contents: write
pull-requests: write
jobs:
crawl-versions:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
repository: community-scripts/ProxmoxVED
ref: main
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Crawl from newreleases.io
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
scripts/get-gh-release.sh
- name: Commit JSON
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "GitHub Actions[bot]"
git checkout -b update_versions || git checkout update_versions
git add frontend/public/json/versions.json
if git diff --cached --quiet; then
echo "No changes detected."
echo "changed=false" >> "$GITHUB_ENV"
exit 0
else
echo "Changes detected:"
git diff --stat --cached
echo "changed=true" >> "$GITHUB_ENV"
fi
git commit -m "Update versions.json"
git push origin update_versions --force
gh pr create --title "[AUTOMATIC PR]Update versions.json" --body "Update versions.json, crawled from newreleases.io" --base main --head update_versions
- name: Approve pull request
if: env.changed == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_NUMBER=$(gh pr list --head "update_versions" --json number --jq '.[].number')
if [ -n "$PR_NUMBER" ]; then
gh pr review $PR_NUMBER --approve
fi
- name: Re-approve pull request after update
if: env.changed == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_NUMBER=$(gh pr list --head "update_versions" --json number --jq '.[].number')
if [ -n "$PR_NUMBER" ]; then
gh pr review $PR_NUMBER --approve
fi

View File

@ -0,0 +1,39 @@
#!/bin/bash
INPUT_FILE="repos.txt"
OUTPUT_FILE="../../public/frontend/versions.json"
TMP_FILE="releases_tmp.json"
if [ -f "$OUTPUT_FILE" ]; then
cp "$OUTPUT_FILE" "$TMP_FILE"
else
echo "[]" > "$TMP_FILE"
fi
while IFS= read -r repo; do
echo "Checking $repo..."
response=$(curl -s -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/${repo}/releases/latest")
tag=$(echo "$response" | jq -r .tag_name)
date=$(echo "$response" | jq -r .published_at)
if [[ "$tag" == "null" || "$date" == "null" ]]; then
echo "No release found for $repo"
continue
fi
existing_version=$(jq -r --arg name "$repo" '.[] | select(.name == $name) | .version' "$TMP_FILE")
if [[ "$existing_version" != "$tag" ]]; then
echo "New release for $repo: $tag"
jq --arg name "$repo" 'del(.[] | select(.name == $name))' "$TMP_FILE" > "$TMP_FILE.tmp" && mv "$TMP_FILE.tmp" "$TMP_FILE"
jq --arg name "$repo" --arg version "$tag" --arg date "$date" \
'. += [{"name": $name, "version": $version, "date": $date}]' "$TMP_FILE" > "$TMP_FILE.tmp" && mv "$TMP_FILE.tmp" "$TMP_FILE"
else
echo "No change for $repo"
fi
done < "$INPUT_FILE"
mv "$TMP_FILE" "$OUTPUT_FILE"

168
.github/workflows/scripts/repos.txt vendored Normal file
View File

@ -0,0 +1,168 @@
0xERR0R/blocky
aceberg/WatchYourLAN
actualbudget/actual-server
agl/jbig2enc
alexta69/metube
AlexxIT/go2rtc
apache/tika
ArtifexSoftware/ghostpdl-downloads
Athou/commafeed
authelia/authelia
azukaar/Cosmos-Server
bastienwirtz/homer
benjaminjonard/koillection
benzino77/tasmocompiler
blakeblackshear/frigate
bluenviron/mediamtx
BookStackApp/BookStack
browserless/chrome
Bubka/2FAuth
caddyserver/xcaddy
clusterzx/paperless-ai
cockpit-project/cockpit
community-scripts/ProxmoxVE
CorentinTh/it-tools
dani-garcia/bw_web_builds
dani-garcia/vaultwarden
deepch/RTSPtoWeb
diced/zipline
docker/compose
docmost/docmost
documenso/documenso
Dolibarr/dolibarr
donaldzou/WGDashboard
Donkie/Spoolman
duplicati/duplicati
ellite/wallos
ErsatzTV/ErsatzTV
evcc-io/evcc
excalidraw/excalidraw
Fallenbagel/jellyseerr
firefly-iii/firefly-iii
FlareSolverr/FlareSolverr
Forceu/barcodebuddy
Forceu/Gokapi
FreshRSS/FreshRSS
FunkeyFlo/ps5-mqtt
gethomepage/homepage
glanceapp/glance
glpi-project/glpi
gnmyt/myspeed
go-gitea/gitea
google-coral/test_data
gotify/server
gotson/komga
gristlabs/grist-core
grocy/grocy
hansmi/prometheus-paperless-exporter
hargata/lubelog
heiher/hev-socks5-server
henrygd/beszel
hivemq/hivemq-community-edition
hoarder-app/hoarder
homarr-labs/homarr
hywax/mafl
ie13/jbig2enc
immich-app/immich
inspircd/inspircd
intel-iot-devkit/sample-videos
ipfs/kubo
Jackett/Jackett
janeczku/calibre-web
jhuckaby/Cronicle
juanfont/headscale
Kareadita/Kavita
keycloak/keycloak
kimai/kimai
knadh/listmonk
Koenkk/zigbee2mqtt
Kometa-Team/Kometa
Kozea/Radicale
leiweibau/Pi
libusb/libusb
linkwarden/linkwarden
linuxserver/docker-paperless-ngx
linuxserver/Heimdall
Lissy93/dashy
louislam/uptime-kuma
Luligu/matterbridge
MagicMirrorOrg/MagicMirror
matze/wastebin
maxmind/geoipupdate
MediaBrowser/Emby
meilisearch/meilisearch
mikefarah/yq
minio/minio
monicahq/monica
morpheus65535/bazarr
motioneye-project/motioneye
msgbyte/tianji
mylar3/mylar3
navidrome/navidrome
netbox-community/netbox
NginxProxyManager/nginx-proxy-manager
NodeBB/NodeBB
ollama/ollama
Ombi-app/Ombi
openobserve/openobserve
openvinotoolkit/open_model_zoo
open-webui/open-webui
paperless-ngx/paperless-ngx
Part-DB/Part-DB-server
paymenter/paymenter
Pf2eToolsOrg/Pf2eTools
pgaskin/kepubify
phpipam/phpipam
pocketbase/pocketbase
pocket-id/pocket-id
PrivateBin/PrivateBin
projectsend/projectsend
prometheus/alertmanager
prometheus/prometheus
prometheus-pve/prometheus-pve-exporter
pymedusa/Medusa
rabbitmq/signing-keys
Requarks/wiki
revenz/Fenrus
rogerfar/rdt-client
rustdesk/rustdesk-server
sabnzbd/sabnzbd
sabre-io/baikal
sbondCo/Watcharr
schlagmichdoch/PairDrop
sct/overseerr
seanmorley15/AdventureLog
searxng/searxng
semaphoreui/semaphore
silverbulletmd/silverbullet
snipe/snipe-it
stackblitz-labs/bolt
Stirling-Tools/Stirling-PDF
stonith404/pingvin-share
Suwayomi/Suwayomi-Server
sysadminsmedia/homebox
TasmoAdmin/TasmoAdmin
Tautulli/Tautulli
thelounge/thelounge-deb
thomiceli/opengist
Threadfin/Threadfin
tobychui/zoraxy
toniebox-reverse-engineering/teddycloud
traccar/traccar
traefik/traefik
trapexit/mergerfs
TriliumNext/Notes
tteck/Proxmox
umami-software/umami
usememos/memos
vabene1111/recipes
ventoy/PXE
VictoriaMetrics/VictoriaMetrics
wavelog/wavelog
wger-project/wger
Y2Z/monolith
yt-dlp/yt-dlp
YuukanOO/seelf
zitadel/zitadel
znerol/prometheus-pve-exporter
zwave-js/zwave-js-ui