Denozordec 4224db8eb3
quality / commitlint (push) Skipped
CD / update-wiki (push) Successful in 6s
quality / changes (push) Successful in 5s
quality / docker-check (push) Skipped
quality / web (push) Successful in 55s
quality / api (push) Successful in 41s
CD / quality (push) Successful in 1m45s
CD / publish (push) Successful in 1m33s
feat(services): enhance service health management with IP health tracking
- Introduced IP health tracking in service views, allowing for detailed monitoring of individual IP statuses and latencies.
- Updated the service configuration to include an `ip_health` array, providing structured health data for each IP.
- Enhanced the `attachServiceHealth` function to aggregate IP health data alongside overall service health.
- Modified relevant components to display IP health information, improving visibility and user experience in service management interfaces.

This commit significantly improves the health monitoring capabilities of services, enabling better insights into the status of individual IPs associated with each service.
2026-08-19 14:57:19 +07:00

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:

  1. pnpm exec semantic-release — тег vX.Y.Z на текущий commit (без дополнительного commit в main).
  2. Gitea Release + CHANGELOG.md как attachment (не в git).
  3. Зеркало base-образов в cfdm-buildcache:base-* (deploy/docker/mirror-base-images.sh; skip существующих тегов, linux/amd64, retry при 429).
  4. docker buildx bake default --push с VERSION=X.Y.Z, pull=false, named builder cfdm (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

См. deploy/docker/README.md.

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 не будет.

S
Description
No description provided
Readme
115 MiB
0 Stars 1 Watchers 0 Forks
v1.28.0
Latest
2026-11-02 21:38:55 +07:00
Languages
TypeScript 98.6%
JavaScript 0.7%
CSS 0.3%
Shell 0.2%
HCL 0.1%
Other 0.1%