- Added new health worker URL and token fields to the AppConfig interface, allowing for Cloudflare Worker integration. - Updated health check routes to utilize the new worker configuration, enabling dynamic health checks via Cloudflare Workers. - Introduced a health log endpoint for services, providing detailed logs of health probe results. - Enhanced health check service logic to support both local and Cloudflare Worker providers, improving flexibility in health monitoring. - Updated UI components to reflect changes in health check provider settings and display relevant health information. This commit significantly improves the health check management capabilities, allowing for better integration with Cloudflare Workers and enhanced logging features.
Gitea Actions
| Workflow | Когда | Что |
|---|---|---|
| workflows/ci.yaml | pull request в main/master | quality gates + commitlint |
| workflows/cd.yaml | push в main/master | quality gates + semantic-release + docker push; wiki параллельно |
| workflows/quality.yaml | reusable (workflow_call) |
changes, web, api, commitlint, docker-check |
Подробнее: docs/releasing.md.
CI (quality gates)
Job changes вычисляет флаги по путям в diff. Полный прогон: .gitea/workflows/*, scripts/*, корневой package.json / pnpm-lock.yaml / .releaserc.json. Правки .cursor/, .claude/, *.md quality jobs не запускают (wiki — отдельный job в CD).
На pull request — commitlint. При изменении deploy/docker/** / .dockerignore — job docker-check (bake --print, bake без --push если есть доступ к registry).
Кэш зависимостей — нативный actions/cache (cache server act_runner), ключ sha256sum lockfile (не hashFiles). Пути абсолютные ($HOME/.pnpm-store): тильда ~ на Gitea часто не раскрывается и даёт вечный miss.
Кэшируется целиком: pnpm store + node_modules + corepack. При hit: pnpm install --offline. HUSKY=0 в scripts/ci/pnpm-ci.sh (у корня есть prepare: husky).
Если restore пишет connect ECONNREFUSED / cache server not configured — на runner включите cache server (см. ниже). Иначе каждый job снова качает пакеты (~минуты).
Runner: ubuntu-latest, Docker для docker-check (PR) и publish (CD).
CD (job publish)
После успешных quality gates на push в main job publish:
pnpm exec semantic-release— тегvX.Y.Zна текущий commit (без дополнительного commit в main).- Gitea Release +
CHANGELOG.mdкак attachment (не в git). - Зеркало base-образов в
cfdm-buildcache:base-*(deploy/docker/mirror-base-images.sh; skip существующих тегов,linux/amd64, retry при 429). docker buildx bake default --pushсVERSION=X.Y.Z,pull=false, named buildercfdm(cleanup: false).
Если releasable-коммитов нет — semantic-release no-op, образы не публикуются.
Повтор упавшего publish (тег уже есть, bake нет): detect берёт v* на HEAD и всё равно пушит образы. Подробнее: docs/releasing.md.
Job update-wiki идёт параллельно publish (не блокирует образы): при diff docs/Home.md копирует файл в wiki-репозиторий. Clone/push идут на публичный https://git.shx.one (не внутренний gitea.server_url / 192.168.x.x:3000): Gitea ROOT_URL совпадает с Host, иначе git-receive-pack wiki отвечает Repository not found. Токен в URL https://oauth2:<PAT>@…/*.wiki.git — Gitea на неаутентифицированный wiki push даёт 404, не 401, поэтому http.extraHeader / ASKPASS не срабатывают. Секрет: ACTIONS_PAT, fallback GITEA_TOKEN.
Секреты
ACTIONS_PAT: push tags, releases, Container Registry. Для git tag fallback: gitea.token. Push OCI — только PAT (у job token Gitea нет права packages).
GITEA_TOKEN: опциональный wiki-only PAT (fallback, если нет ACTIONS_PAT).
Теги образов
git.shx.one/<owner>/cfdm:latest
git.shx.one/<owner>/cfdm:v1.2.3
git.shx.one/<owner>/cfdm:1.2.3
git.shx.one/<owner>/cfdm:<short-sha>
git.shx.one/<owner>/cfdm:sha-<full-sha>
Тот же манифест публикуется как cloudflare-domain-manager (drop-in для текущего docker pull).
Кэш сборки: cfdm-buildcache:node-buildcache и cfdm-buildcache:base-*.
Пример:
docker pull git.shx.one/denozord/cfdm:latest
docker pull git.shx.one/denozord/cloudflare-domain-manager:latest
act_runner: cache server
actions/cache ходит в встроенный cache server runner (не GitHub type=gha). Кэш локален для этого runner.
В config.yaml runner:
cache:
enabled: true
dir: "" # по умолчанию $HOME/.cache/actcache
host: "" # IP, доступный из job-контейнера (не 0.0.0.0)
port: 8088
Если runner в Docker, а jobs — отдельные контейнеры: пробросьте порт и задайте host (LAN IP хоста) или external_server: "http://<host>:8088/". Иначе restore — timeout/ECONNREFUSED и пакеты качаются снова.
Не делайте docker system prune -a по cron: сотрётся и Docker-кэш FROM, и пользы от cleanup: false у buildx не будет.