Вместо GitHub Actions — .gitea/workflows/build.yml: проверка, тесты, сборка, валидация настоящими Xray и sing-box, публикация в ветку release и релиз через Gitea API (tools/gitea-release.sh). Ни gh CLI, ни GitHub-only экшенов. Для серверов — tools/update-geosite.sh: сверяет sha256 до закачки и выходит молча, если файл не менялся, проверяет сумму до подмены, подменяет атомарно и дёргает перезапуск только когда файл реально обновился. Едет в dist/, поэтому на сервере нужен один базовый URL. В README — cron и systemd timer. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
f905a76caf
commit
c05f6aa0d7
@@ -443,6 +443,19 @@ def build(out_dir: Path, singbox: str | None, mihomo: str | None) -> int:
|
||||
+ "\n",
|
||||
)
|
||||
|
||||
# Скрипт обновления едет вместе с артефактами: на сервере тогда нужен
|
||||
# ровно один базовый URL — и для .dat, и для самого апдейтера.
|
||||
updater = Path(__file__).with_name("update-geosite.sh")
|
||||
if updater.is_file():
|
||||
write(out_dir / updater.name, updater.read_text(encoding="utf-8"))
|
||||
|
||||
checksums = "".join(
|
||||
f"{hashlib.sha256(path.read_bytes()).hexdigest()} {path.relative_to(out_dir).as_posix()}\n"
|
||||
for path in sorted(out_dir.rglob("*"))
|
||||
if path.is_file()
|
||||
)
|
||||
write(out_dir / "SHA256SUMS", checksums)
|
||||
|
||||
print(f"geosite.dat: {len(dat)} байт, sha256 {digest[:16]}…")
|
||||
for name in categories:
|
||||
print(f" {name:<12} {len(resolved[name]):>4} правил")
|
||||
|
||||
Reference in New Issue
Block a user