# Redmine в test-контуре > Внедрено в test-контуре **29–30.05.2026**. Sentry из контура **удалён** (≈10 GiB RAM) — для ошибок приложений используйте [Grafana → Loki](./monitoring.md). **Redmine** — issue tracker для задач разработки. В test-контуре он связан с Git-flow: коммиты с `Refs #N` / `Fixes #N` можно привязать к задачам; интеграция с Gitea настраивается вручную (см. ниже). ## URL и доступы | Сервис | URL | Логин | Пароль | |--------|-----|-------|--------| | **Redmine** | http://redmine.sova.local | `admin` | `SovaRedmineTest2026!` | | Gitea | http://git.sova.local | `gitea_admin` | `.generated/platform-credentials.env` | Добавить в `/etc/hosts` (IP из `multipass info sova-test` или `./scripts/print-urls.sh`): ``` 192.168.252.2 redmine.sova.local ``` Пароль test-контура также в `sova-deploy/apps/redmine/values-test.yaml`. --- ## Интерфейс ![Redmine: страница входа](../screenshots/21-redmine-login.png) *Страница входа Redmine.* ![Redmine: главная](../screenshots/22-redmine-home.png) *Главная Redmine: проекты и задачи.* ### Проект и задача по умолчанию После bootstrap (`./scripts/bootstrap-redmine.sh`): | Объект | Значение | |--------|----------| | Проект | **Sova Platform** (`sova-platform`) | | Пример задачи | [#27 CRUD для новых сущностей в API](http://redmine.sova.local/issues/27) | Задача #27 описывает CRUD для сущностей (новости, акции, заболевания, центры, статьи, услуги) — эталон для работы по Git-flow в test-контуре. --- ## Архитектура ```mermaid flowchart LR subgraph gitops [GitOps] SD[sova-deploy main] RT[ArgoCD redmine-test] SP[ArgoCD sova-projects] end subgraph cluster [k3s] RM[Redmine pod] PG[(PostgreSQL redmine_test)] MP[Mailpit SMTP] ING[Ingress redmine.sova.local] end SD --> RT --> RM SD --> SP RM --> PG RM --> MP ING --> RM ``` | Компонент | Решение | |-----------|---------| | Chart | `sova-deploy/apps/redmine/` → Bitnami wrapper | | Образ | `bitnamilegacy/redmine:6.0.5-debian-12-r0` | | Namespace | `redmine` | | PostgreSQL | БД `redmine_test` в `sova-data-test` (общий `postgresql-test`) | | SMTP | Mailpit `mailpit.sova-mocks.svc.cluster.local:1025` (письма в UI Mailpit) | | Ingress | `redmine.sova.local` (`deploy-platform-ingress.sh`) | | ArgoCD | Application `redmine-test` в `argocd/apps/platform-tools.yaml` | | AppProject | namespace `redmine` в `argocd/projects/sova-project.yaml`, GitOps через `sova-projects` | --- ## Деплой ### Через ArgoCD (основной путь) После push `sova-deploy` в Gitea приложение `redmine-test` синхронизируется автоматически (`sova-root` → `platform-tools.yaml`). Проверка: ```bash kubectl get application redmine-test -n argocd kubectl get pods -n redmine curl -s -o /dev/null -w "%{http_code}\n" http://redmine.sova.local/ ``` ### Вручную (bootstrap кластера) ```bash cd k3s-test source ./scripts/use-kubeconfig.sh # Helm + ingress + ArgoCD Application ./scripts/deploy-redmine.sh # Проект sova-platform + задача #27 через REST API ./scripts/deploy-redmine.sh --bootstrap # или отдельно: ./scripts/bootstrap-redmine.sh ``` `bootstrap-redmine.sh`: 1. Включает REST API в PostgreSQL (`rest_api_enabled`). 2. Создаёт проект `sova-platform`, если его нет. 3. Создаёт задачу **#27** с описанием CRUD (если ещё не существует). --- ## Git-flow и коммиты Регламент сообщений коммитов (связь с Redmine): ``` feat(adminpanel): content CRUD (Refs #27) fix(cabinet): registration on test contour (Fixes #45) ``` | Маркер | Эффект | |--------|--------| | `Refs #N` | ссылка на задачу; при webhook — ревизия в Redmine | | `Fixes #N` | кликабельная ссылка в Gitea (external tracker) | Ветки: `prod` / `test` / `stage` — см. [Git-flow](../git-flow.md) и [Gitea CI](./gitea-ci.md). --- ## Интеграция Gitea ↔ Redmine Автоматизация через Gitea API **не включена** — только инструкции: ```bash ./scripts/setup-gitea-redmine-integration.sh ``` Скрипт выводит шаги: 1. **External Issue Tracker** (каждый repo: backend, adminpanel, cabinet, docs) URL: `http://redmine.sova.local/issues/{index}` 2. **Webhook** (Push → ревизии в задаче) URL: `http://redmine.sova.local/github_hook?project_id=` Требует plugin `redmine_github_hook` в custom-образе `sova-redmine/` (опционально, не в базовом деплое). Базовый test-контур работает без webhook: задачи создаются в UI или через `bootstrap-redmine.sh`, коммиты помечаются `Refs #N` вручную в сообщении. --- ## Troubleshooting | Проблема | Решение | |----------|---------| | `redmine-test` InvalidSpecError (namespace) | Применить `argocd/projects/sova-project.yaml`; проверить ArgoCD app `sova-projects` | | Redmine ImagePullBackOff | `global.security.allowInsecureImages: true`; образ `bitnamilegacy/redmine` | | DB connection error | БД `redmine_test` в `sova-data-test`; job `db-init` / SQL в `data/test/` | | HTTP 502 / pod CrashLoop | `kubectl logs -n redmine deploy/redmine-test`; проверить PostgreSQL | | REST API 403 | `./scripts/bootstrap-redmine.sh` включает `rest_api_enabled` | | Письма не приходят | Ожидаемо в test: SMTP → Mailpit, не реальная почта | Проверка БД: ```bash kubectl exec -n sova-data-test postgresql-test-0 -- \ env PGPASSWORD=sova_test_pass psql -U sova_test -d redmine_test -c '\dt' | head ``` --- ## Файлы в репозитории | Путь | Назначение | |------|------------| | `sova-deploy/apps/redmine/` | Helm chart + `values-test.yaml` | | `sova-deploy/argocd/apps/platform-tools.yaml` | Application `redmine-test` | | `sova-deploy/argocd/apps/sova-projects.yaml` | GitOps для AppProject (namespace `redmine`) | | `scripts/deploy-redmine.sh` | Helm + ingress + ArgoCD | | `scripts/bootstrap-redmine.sh` | Проект + задача #27 | | `scripts/setup-gitea-redmine-integration.sh` | Инструкции Gitea ↔ Redmine | | `sova-redmine/` | Custom image с `redmine_github_hook` (опционально) | --- ## Связанные разделы - [Grafana / Loki](./monitoring.md) — логи pod'ов (вместо Sentry) - [Git-flow](../git-flow.md) — ветки и PR - [Gitea CI](./gitea-ci.md) — pipeline и теги - [ArgoCD: приложения](./argocd.md) — sync и health - [Практическое руководство](../../../presentation-practical-guide.md)