Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5f4be34a73
|
||
|
|
2a16a866ed
|
@@ -9,9 +9,14 @@ import os
|
|||||||
import re
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
import urllib.error
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
import urllib.request
|
import urllib.request
|
||||||
|
|
||||||
|
# Paket-Typen, unter denen dasselbe Release veroeffentlicht wird und die sich
|
||||||
|
# daher eine gemeinsame Build-Nummer teilen muessen.
|
||||||
|
PACKAGE_TYPES = ("debian", "rpm", "arch")
|
||||||
|
|
||||||
|
|
||||||
def get_cargo_pkg_info():
|
def get_cargo_pkg_info():
|
||||||
try:
|
try:
|
||||||
@@ -83,20 +88,29 @@ def query_existing_build_numbers(name, version, gitea_url, repo, owner, token=No
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
sys.stderr.write(f"[Hinweis] Konnte Gitea Releases nicht abfragen: {e}\n")
|
sys.stderr.write(f"[Hinweis] Konnte Gitea Releases nicht abfragen: {e}\n")
|
||||||
|
|
||||||
# 2. Gitea Packages API (falls Token vorhanden)
|
# 2. Gitea Packages API (falls Token vorhanden): pro Paket-Typ gezielt nur die
|
||||||
if gitea_url and owner and token:
|
# neueste Version abfragen (ein Request, keine Pagination noetig). Das haelt
|
||||||
|
# die Abfrage schnell unabhaengig von der Historie und ist unbeeinflusst von
|
||||||
|
# Docker-Tags/anderen Paket-Typen, die unter demselben Owner haengen.
|
||||||
|
if gitea_url and owner and token and name:
|
||||||
|
for pkg_type in PACKAGE_TYPES:
|
||||||
try:
|
try:
|
||||||
url = f"{gitea_url.rstrip('/')}/api/v1/packages/{owner}?limit=50"
|
url = (
|
||||||
|
f"{gitea_url.rstrip('/')}/api/v1/packages/{owner}/"
|
||||||
|
f"{pkg_type}/{urllib.parse.quote(name, safe='')}/-/latest"
|
||||||
|
)
|
||||||
req = urllib.request.Request(url, headers=headers)
|
req = urllib.request.Request(url, headers=headers)
|
||||||
with urllib.request.urlopen(req, timeout=10) as resp:
|
with urllib.request.urlopen(req, timeout=10) as resp:
|
||||||
packages = json.loads(resp.read().decode())
|
pkg = json.loads(resp.read().decode())
|
||||||
for pkg in packages:
|
|
||||||
pkg_ver = pkg.get("version", "")
|
pkg_ver = pkg.get("version", "")
|
||||||
m = pattern.search(pkg_ver)
|
m = pattern.search(pkg_ver)
|
||||||
if m:
|
if m:
|
||||||
build_nums.add(int(m.group(1)))
|
build_nums.add(int(m.group(1)))
|
||||||
|
except urllib.error.HTTPError as e:
|
||||||
|
if e.code != 404:
|
||||||
|
sys.stderr.write(f"[Hinweis] Konnte neueste {pkg_type}-Paketversion nicht abfragen: {e}\n")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
sys.stderr.write(f"[Hinweis] Konnte Gitea Packages nicht abfragen: {e}\n")
|
sys.stderr.write(f"[Hinweis] Konnte neueste {pkg_type}-Paketversion nicht abfragen: {e}\n")
|
||||||
|
|
||||||
# 3. Lokales Target-Verzeichnis prüfen
|
# 3. Lokales Target-Verzeichnis prüfen
|
||||||
target_dirs = ["target/debian", "target/generate-rpm", "target/arch"]
|
target_dirs = ["target/debian", "target/generate-rpm", "target/arch"]
|
||||||
|
|||||||
Reference in New Issue
Block a user