Files
docs/infrastructure/test-contour/guides/redmine.md
T
2026-06-03 18:37:53 +03:00

7.3 KiB
Raw Blame History

Redmine в test-контуре

Внедрено в test-контуре 2930.05.2026. Sentry из контура удалён (≈10 GiB RAM) — для ошибок приложений используйте Grafana → Loki.

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: страница входа

Страница входа Redmine.

Redmine: главная

Главная Redmine: проекты и задачи.

Проект и задача по умолчанию

После bootstrap (./scripts/bootstrap-redmine.sh):

Объект Значение
Проект Sova Platform (sova-platform)
Пример задачи #27 CRUD для новых сущностей в API

Задача #27 описывает CRUD для сущностей (новости, акции, заболевания, центры, статьи, услуги) — эталон для работы по Git-flow в test-контуре.


Архитектура

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-rootplatform-tools.yaml).

Проверка:

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 кластера)

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 и Gitea CI.


Интеграция Gitea ↔ Redmine

Автоматизация через Gitea API не включена — только инструкции:

./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=<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, не реальная почта

Проверка БД:

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 (опционально)

Связанные разделы