ci: переключить registry на git.shx.one
Docker images / prepare-release (push) Successful in 6s
Docker images / backend-image (push) Successful in 4m25s
Docker images / frontend-image (push) Successful in 2m10s
Docker images / notify-webhook (push) Skipped
Docker images / updater-image (push) Successful in 45s
Docker images / publish-release (push) Successful in 6s

Обновить Gitea Actions, compose, updater и ссылки на образы.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Denozordec
2026-08-17 16:43:40 +07:00
co-authored by Cursor
parent 7f81c304ae
commit 7ed269cf2c
9 changed files with 43 additions and 43 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ const outputDir = process.env.RELEASE_OUTPUT_DIR
? join(repoRoot, process.env.RELEASE_OUTPUT_DIR)
: join(repoRoot, ".ci", "release")
const repository = process.env.GITEA_REPOSITORY ?? process.env.GITHUB_REPOSITORY ?? ""
const serverUrl = (process.env.GITEA_SERVER_URL ?? "https://git.shts.su").replace(/\/$/, "")
const serverUrl = (process.env.GITEA_SERVER_URL ?? "https://git.shx.one").replace(/\/$/, "")
const MANIFEST_COMMIT_LIMIT = Number(process.env.RELEASE_MANIFEST_COMMIT_LIMIT ?? 6)
const CONVENTIONAL_RE =
+5 -5
View File
@@ -7,8 +7,8 @@ on:
workflow_dispatch:
env:
REGISTRY: git.shts.su
GITEA_SERVER_URL: https://git.shts.su
REGISTRY: git.shx.one
GITEA_SERVER_URL: https://git.shx.one
jobs:
prepare-release:
@@ -76,7 +76,7 @@ jobs:
- name: Log in to Gitea Registry
uses: docker/login-action@v3
with:
registry: git.shts.su
registry: git.shx.one
username: ${{ gitea.actor }}
password: ${{ secrets.ACTIONS_PAT }}
@@ -161,7 +161,7 @@ jobs:
- name: Log in to Gitea Registry
uses: docker/login-action@v3
with:
registry: git.shts.su
registry: git.shx.one
username: ${{ gitea.actor }}
password: ${{ secrets.ACTIONS_PAT }}
@@ -214,7 +214,7 @@ jobs:
- name: Log in to Gitea Registry
uses: docker/login-action@v3
with:
registry: git.shts.su
registry: git.shx.one
username: ${{ gitea.actor }}
password: ${{ secrets.ACTIONS_PAT }}
+25 -25
View File
@@ -23,13 +23,13 @@
| Контракты | `packages/contracts/` | Zod 4, `@mmapp/contracts` | — | встраиваются в frontend/backend |
| Updater | `deploy/updater/` | bash, `docker:27-cli`, curl, jq | — | `…-updater` |
| Деплой | `deploy/docker-compose.yml` | Docker Compose | — | — |
| CI | `.gitea/workflows/docker.yml` | Gitea Actions, Buildx | — | push в `git.shts.su` |
| CI | `.gitea/workflows/docker.yml` | Gitea Actions, Buildx | — | push в `git.shx.one` |
Имена образов в registry для репозитория `denozord/MikrotikManager-3`:
- `git.shts.su/denozord/mikrotikmanager-backend`
- `git.shts.su/denozord/mikrotikmanager-frontend`
- `git.shts.su/denozord/mikrotikmanager-updater`
- `git.shx.one/denozord/mikrotikmanager-backend`
- `git.shx.one/denozord/mikrotikmanager-frontend`
- `git.shx.one/denozord/mikrotikmanager-updater`
Для другого owner/repo подставьте имя по правилу CI (см. [CI/CD](#cicd-gitea-actions)).
@@ -54,7 +54,7 @@ flowchart TB
subgraph ci [Gitea Actions]
WF[".gitea/workflows/docker.yml"]
WF --> Reg["git.shts.su registry"]
WF --> Reg["git.shx.one registry"]
end
subgraph prod [Прод-сервер]
@@ -192,9 +192,9 @@ npm --prefix backend run db:studio
| Job | Build context | Dockerfile | Имя образа |
|-----|---------------|------------|------------|
| `backend-image` | `.ci/docker/backend` (staging в CI) | `backend/Dockerfile` | `git.shts.su/<owner>/<stem>-backend` |
| `frontend-image` | `.ci/docker/frontend` | `Dockerfile.frontend` | `git.shts.su/<owner>/<stem>-frontend` |
| `updater-image` | `deploy/updater` | `deploy/updater/Dockerfile` | `git.shts.su/<owner>/<stem>-updater` |
| `backend-image` | `.ci/docker/backend` (staging в CI) | `backend/Dockerfile` | `git.shx.one/<owner>/<stem>-backend` |
| `frontend-image` | `.ci/docker/frontend` | `Dockerfile.frontend` | `git.shx.one/<owner>/<stem>-frontend` |
| `updater-image` | `deploy/updater` | `deploy/updater/Dockerfile` | `git.shx.one/<owner>/<stem>-updater` |
- `<owner>` — первая часть `gitea.repository`, lower case.
- `<stem>` — имя репозитория lower case без суффикса `-<цифры>` в конце (например `MikrotikManager-3``mikrotikmanager`).
@@ -212,7 +212,7 @@ npm --prefix backend run db:studio
- **`feat` / `feat!` / `BREAKING CHANGE`** → minor (`1.x.0`); **`fix`**, `chore`, `docs`, `refactor`, `style`, `test`, `build`, `ci` → patch (`1.0.x`).
- Если после последнего тега нет новых коммитов, **релиз** пропускается; Docker-образы при этом всё равно собираются и публикуются с `:latest` и `:<sha>`.
- Первый релиз без тега `v1.0.0` возможен автоматически: CI берёт историю `HEAD`, считает bump от `1.0.0` и создаёт тег (например `v1.1.0` при `feat:`).
- Job **`publish-release`**: annotated tag `v1.2.3`, Gitea Release на `https://git.shts.su` (markdown notes), образы с тегами `:latest`, `:<sha>`, `:<semver>`.
- Job **`publish-release`**: annotated tag `v1.2.3`, Gitea Release на `https://git.shx.one` (markdown notes), образы с тегами `:latest`, `:<sha>`, `:<semver>`.
- UI: версия в sidebar и страница **`/releases`**; manifest `public/release-manifest.json` (в CI подставляется из артефакта).
- Bootstrap: один раз выставить `1.0.0` в workspace `package.json` и создать тег **`v1.0.0`** на `main` перед первым автоматическим bump.
- Сообщения коммитов: см. [`.cursor/rules/release-versioning.mdc`](.cursor/rules/release-versioning.mdc); subject и body — **на русском**, префикс Conventional Commits — на английском.
@@ -225,9 +225,9 @@ npm --prefix backend run db:studio
| Сервис | `container_name` | Образ (пример) | Порты host:container | Тома | `restart` |
|--------|------------------|----------------|----------------------|------|-----------|
| backend | `mmapp-backend` | `git.shts.su/denozord/mikrotikmanager-backend:latest` | `8000:8000` | `backend-data``/app/data` | `unless-stopped` |
| frontend | `mmapp-frontend` | `git.shts.su/denozord/mikrotikmanager-frontend:latest` | `3000:3000` | — | `unless-stopped` |
| updater | `mmapp-updater` | `git.shts.su/denozord/mikrotikmanager-updater:latest` | не публикуются | docker.sock, `updater-state``/state`, `targets.json``/etc/updater/targets.json:ro` | `unless-stopped` |
| backend | `mmapp-backend` | `git.shx.one/denozord/mikrotikmanager-backend:latest` | `8000:8000` | `backend-data``/app/data` | `unless-stopped` |
| frontend | `mmapp-frontend` | `git.shx.one/denozord/mikrotikmanager-frontend:latest` | `3000:3000` | — | `unless-stopped` |
| updater | `mmapp-updater` | `git.shx.one/denozord/mikrotikmanager-updater:latest` | не публикуются | docker.sock, `updater-state``/state`, `targets.json``/etc/updater/targets.json:ro` | `unless-stopped` |
Метки для updater на backend и frontend:
@@ -258,14 +258,14 @@ npm --prefix backend run db:studio
| `POLL_INTERVAL_SECONDS` | `300` | пауза между циклами опроса |
| `HEALTH_TIMEOUT_SECONDS` | `120` | ожидание HTTP health |
| `STOP_TIMEOUT_SECONDS` | `30` | `docker stop -t` |
| `REGISTRY` | `git.shts.su` | registry для `docker login` |
| `REGISTRY` | `git.shx.one` | registry для `docker login` |
| `REGISTRY_USERNAME` | пусто | логин (если заданы оба с паролем) |
| `REGISTRY_PASSWORD` | пусто | пароль registry |
### Docker Compose
```bash
docker login git.shts.su
docker login git.shx.one
export CORS_ORIGIN=http://<хост>:3000
export REGISTRY_USERNAME=<user>
export REGISTRY_PASSWORD=<token>
@@ -307,8 +307,8 @@ docker run -d \
-v backend-data:/app/data \
--label mmapp.updater.managed=true \
--label mmapp.updater.target=backend \
--label mmapp.updater.image=git.shts.su/denozord/mikrotikmanager-backend:latest \
git.shts.su/denozord/mikrotikmanager-backend:latest
--label mmapp.updater.image=git.shx.one/denozord/mikrotikmanager-backend:latest \
git.shx.one/denozord/mikrotikmanager-backend:latest
```
**Frontend:**
@@ -320,8 +320,8 @@ docker run -d \
-p 3000:3000 \
--label mmapp.updater.managed=true \
--label mmapp.updater.target=frontend \
--label mmapp.updater.image=git.shts.su/denozord/mikrotikmanager-frontend:latest \
git.shts.su/denozord/mikrotikmanager-frontend:latest
--label mmapp.updater.image=git.shx.one/denozord/mikrotikmanager-frontend:latest \
git.shx.one/denozord/mikrotikmanager-frontend:latest
```
**Updater:**
@@ -331,7 +331,7 @@ docker volume create updater-state
docker run -d \
--name mmapp-updater \
--restart unless-stopped \
-e REGISTRY=git.shts.su \
-e REGISTRY=git.shx.one \
-e REGISTRY_USERNAME=<user> \
-e REGISTRY_PASSWORD=<token> \
-e POLL_INTERVAL_SECONDS=300 \
@@ -340,7 +340,7 @@ docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-v updater-state:/state \
-v /path/to/targets.json:/etc/updater/targets.json:ro \
git.shts.su/denozord/mikrotikmanager-updater:latest
git.shx.one/denozord/mikrotikmanager-updater:latest
```
### Проверка после деплоя
@@ -399,7 +399,7 @@ bash deploy/updater/validate.sh
## Первичная настройка сервера
Пошагово на чистом Linux-хосте с доступом в интернет и к `git.shts.su`.
Пошагово на чистом Linux-хосте с доступом в интернет и к `git.shx.one`.
1. Установить Docker Engine и плагин Compose (официальная документация Docker для вашего дистрибутива).
2. Проверить:
@@ -413,7 +413,7 @@ docker compose version
4. Войти в registry:
```bash
docker login git.shts.su
docker login git.shx.one
```
5. Получить файлы деплоя: клонировать репозиторий или скопировать каталог `deploy/` и подготовить `deploy/updater/targets.json`.
@@ -443,8 +443,8 @@ Updater опрашивает registry с интервалом `POLL_INTERVAL_SEC
### Ручное обновление
```bash
docker pull git.shts.su/denozord/mikrotikmanager-backend:latest
docker pull git.shts.su/denozord/mikrotikmanager-frontend:latest
docker pull git.shx.one/denozord/mikrotikmanager-backend:latest
docker pull git.shx.one/denozord/mikrotikmanager-frontend:latest
```
Через compose (пересоздание при смене образа):
@@ -485,7 +485,7 @@ docker start mmapp-backend
1. Установить Docker Engine и Compose plugin; проверить `docker version` и `docker compose version`.
2. Открыть порты 3000 и 8000 (или обеспечить доступ клиентов к UI и API).
3. Выполнить `docker login git.shts.su`.
3. Выполнить `docker login git.shx.one`.
4. Склонировать репозиторий или скопировать `deploy/`.
5. Задать `CORS_ORIGIN` (origin фронтенда для браузера).
6. Задать `REGISTRY_USERNAME` и `REGISTRY_PASSWORD` для updater при приватном registry.
+1 -1
View File
@@ -1189,7 +1189,7 @@ export default function SettingsPage() {
Control plane EvoBGP: Bearer-ключ и роль viewer+ см.{" "}
<a
className="underline underline-offset-2"
href="https://git.shts.su/denozord/EvoBGP/src/branch/main/docs/access.md"
href="https://git.shx.one/denozord/EvoBGP/src/branch/main/docs/access.md"
target="_blank"
rel="noreferrer"
>
+6 -6
View File
@@ -1,6 +1,6 @@
services:
backend:
image: git.shts.su/denozord/mikrotikmanager-backend:latest
image: git.shx.one/denozord/mikrotikmanager-backend:latest
container_name: mmapp-backend
restart: unless-stopped
ports:
@@ -12,10 +12,10 @@ services:
labels:
mmapp.updater.managed: "true"
mmapp.updater.target: backend
mmapp.updater.image: git.shts.su/denozord/mikrotikmanager-backend:latest
mmapp.updater.image: git.shx.one/denozord/mikrotikmanager-backend:latest
frontend:
image: git.shts.su/denozord/mikrotikmanager-frontend:latest
image: git.shx.one/denozord/mikrotikmanager-frontend:latest
container_name: mmapp-frontend
restart: unless-stopped
depends_on:
@@ -27,14 +27,14 @@ services:
labels:
mmapp.updater.managed: "true"
mmapp.updater.target: frontend
mmapp.updater.image: git.shts.su/denozord/mikrotikmanager-frontend:latest
mmapp.updater.image: git.shx.one/denozord/mikrotikmanager-frontend:latest
updater:
image: git.shts.su/denozord/mikrotikmanager-updater:latest
image: git.shx.one/denozord/mikrotikmanager-updater:latest
container_name: mmapp-updater
restart: unless-stopped
environment:
REGISTRY: git.shts.su
REGISTRY: git.shx.one
REGISTRY_USERNAME: ${REGISTRY_USERNAME:-}
REGISTRY_PASSWORD: ${REGISTRY_PASSWORD:-}
POLL_INTERVAL_SECONDS: ${POLL_INTERVAL_SECONDS:-300}
+1 -1
View File
@@ -16,7 +16,7 @@ ENV STATE_FILE=/state/updater-state.json
ENV POLL_INTERVAL_SECONDS=300
ENV HEALTH_TIMEOUT_SECONDS=120
ENV STOP_TIMEOUT_SECONDS=30
ENV REGISTRY=git.shts.su
ENV REGISTRY=git.shx.one
VOLUME ["/state"]
+1 -1
View File
@@ -6,7 +6,7 @@ STATE_FILE="${STATE_FILE:-/state/updater-state.json}"
POLL_INTERVAL_SECONDS="${POLL_INTERVAL_SECONDS:-300}"
HEALTH_TIMEOUT_SECONDS="${HEALTH_TIMEOUT_SECONDS:-120}"
STOP_TIMEOUT_SECONDS="${STOP_TIMEOUT_SECONDS:-30}"
REGISTRY="${REGISTRY:-git.shts.su}"
REGISTRY="${REGISTRY:-git.shx.one}"
MANAGED_LABEL="mmapp.updater.managed"
TARGET_LABEL="mmapp.updater.target"
IMAGE_LABEL="mmapp.updater.image"
+2 -2
View File
@@ -3,7 +3,7 @@
{
"id": "backend",
"container_name": "mmapp-backend",
"image": "git.shts.su/denozord/mikrotikmanager-backend:latest",
"image": "git.shx.one/denozord/mikrotikmanager-backend:latest",
"health": {
"type": "http",
"url": "http://backend:8000/health",
@@ -13,7 +13,7 @@
{
"id": "frontend",
"container_name": "mmapp-frontend",
"image": "git.shts.su/denozord/mikrotikmanager-frontend:latest",
"image": "git.shx.one/denozord/mikrotikmanager-frontend:latest",
"health": {
"type": "http",
"url": "http://frontend:3000/dashboard",
+1 -1
View File
@@ -18,7 +18,7 @@ Staging checklist for mmapp-updater:
- Confirm updater rolls back to previous_digest and keeps mmapp-backend running.
4. Registry outage
- Block access to git.shts.su temporarily.
- Block access to git.shx.one temporarily.
- Confirm updater logs remote_digest_failed and does not stop managed containers.
Run ./validate.sh before executing this checklist on a staging host.