Sign inSign up

umkabeaf/archimate-report

By umkabeaf

•Updated 20 days ago

ArchiMate model in git -> live HTML report, auto-updated. Multi-arch: amd64 + native arm64.

Image
Developer tools
Web servers
Content management system
0

1.2K

umkabeaf/archimate-report repository overview

⁠archimate-report

🇬🇧 English⁠ · 🇷🇺 Русский⁠

📦 Source / Исходники: github.com/umka-beaf/archimate-report⁠

A Docker image that clones a git repository containing an ArchiMate model, generates an HTML report via the Archi CLI, and serves it as static files. Supports a webhook to regenerate on push. Multi-arch: linux/amd64 + linux/arm64 — both architectures built natively (arm64 from Archi source, no emulation at runtime).

🥧 Killer feature: Archi finally runs on a Raspberry Pi — no official Linux ARM64 build exists, so we build one natively from source. 📝 Plus an RU/EN + light/dark report theme that renders element documentation as Markdown instead of raw text (USE_MODERN_CSS).

Docker-образ, который клонирует git-репозиторий с ArchiMate-моделью, генерирует HTML-отчёт через Archi CLI и раздаёт его статикой. Поддерживает вебхук для перегенерации по пушу. Multi-arch: linux/amd64 + linux/arm64 — обе архитектуры собраны нативно (arm64 — из исходников Archi, никакой эмуляции в рантайме).

🥧 Killer-фича: Archi наконец-то запускается на Raspberry Pi — официальной Linux ARM64-сборки не существует, мы собираем её нативно из исходников. 📝 Плюс RU/EN + light/dark тема отчёта с рендерингом документации элементов как Markdown, а не сырого текста (USE_MODERN_CSS).


⁠🇬🇧 English

⁠What it does
  1. On container start, clones a git repository containing an ArchiMate model — a single *.archimate file or a coArchi repository (format auto-detected).
  2. Runs the model through the official Archi CLI⁠ to generate an HTML report.
  3. Serves the report as static files via Caddy on port 3000.
  4. Optionally accepts a webhook (github/gitlab/generic) to regenerate the report on a push to the model repository.
⁠Quick start
docker run -d \
  --name archimate-report \
  -p 3000:3000 \
  -e GIT_URL=https://github.com/your-org/your-model-repo.git \
  -e GIT_TOKEN=ghp_xxx \
  umkabeaf/archimate-report:latest

The report is available at http://localhost:3000 a few seconds after start (the first generation runs synchronously before the web server comes up).

⁠Environment variables
VariableRequiredDescription
GIT_URLyesRepository URL (https:// or git@...)
GIT_REFnobranch/tag/commit, defaults to the default branch's HEAD
MODEL_PATHnopath to the .archimate file or coArchi repo root, if auto-detection is ambiguous
MODEL_FORMATnoauto (default) / plain / coarchi
GIT_TOKENno*HTTPS token (PAT)
GIT_USERNAME / GIT_PASSWORDno*login+password for HTTPS
GIT_SSH_PRIVATE_KEYno*private SSH key (PEM or base64) ⚠️ not tested end-to-end yet
GIT_SSH_KNOWN_HOSTSnoknown_hosts content; without it — TOFU (accept-new)
WEBHOOK_SECRETnoif set, enables /webhook
WEBHOOK_PROVIDERno**github / gitlab / generic — required if WEBHOOK_SECRET is set
WEBHOOK_PATHnoendpoint path, defaults to /webhook
PORTnoserving port, defaults to 3000
REGENERATE_ON_STARTnotrue (default) / false
GENERATION_TIMEOUTnotimeout for a single generation run, seconds (default 600)
USE_MODERN_CSSnotrue (default) / false — RU/EN + light/dark report theme layered on Archi's stock look; false serves Archi's unmodified report
LOG_LEVELnoDEBUG / INFO (default) / WARNING / ERROR — verbosity of the service's own log lines
TZnocontainer timezone

* — exactly one git auth method (or none, for public repositories). ** — required only together with WEBHOOK_SECRET.

GET /status (same port as the report) returns JSON {generating, last_run_at, last_success, last_error} — used as the healthcheck.

⁠Volumes

Three working directories; none are declared as VOLUME in the image — without explicit mounting they're ordinary container layers that don't survive docker rm:

PathPurposeMount it?
/data/reportFinished HTML report, served by CaddyYes, if you want the report to survive container recreation — especially with REGENERATE_ON_START=false
/data/repoWorking copy of the model's git repositoryOptional — speeds up subsequent runs (git fetch instead of a full clone)
/data/secretsTemporary auth material (SSH key/token/password), 600 permsNo — recreated from env vars on every run; mounting it only extends how long secrets sit on disk
docker run -d \
  --name archimate-report \
  -p 3000:3000 \
  -v archimate-report-data:/data/report \
  -e GIT_URL=https://github.com/your-org/your-model-repo.git \
  -e GIT_TOKEN=ghp_xxx \
  -e REGENERATE_ON_START=false \
  umkabeaf/archimate-report:latest
⁠Image tags
  • :latest — the most recently published version.
  • :<Archi version> (e.g. :5.9.0) — a specific Archi version baked into the image; pin this in production instead of :latest.

Both tags from a given release point at the same multi-arch manifest list (amd64 + arm64) — they never drift apart.

This image is also mirrored to GitHub Container Registry — ghcr.io/umka-beaf/archimate-report⁠, tags kept in sync with this page.

⁠Architectures
  • linux/amd64 — official Archi build (Archi-Linux64-*.tgz).
  • linux/arm64 — Archi built natively from source (Tycho/Maven, linux/gtk/aarch64) at image build time. No QEMU/box64 at runtime — only used at docker buildx build time for cross-compilation; the running container is fully native on both architectures.

⁠🇷🇺 Русский

⁠Что делает
  1. При старте контейнера клонирует git-репозиторий с ArchiMate-моделью — одиночный *.archimate-файл или coArchi-репозиторий (автоопределение формата).
  2. Прогоняет модель через официальный Archi CLI⁠ и генерирует HTML-отчёт.
  3. Раздаёт отчёт статикой через Caddy на порту 3000.
  4. Опционально принимает вебхук (github/gitlab/generic) для перегенерации отчёта по пушу в репозиторий модели.
⁠Быстрый старт
docker run -d \
  --name archimate-report \
  -p 3000:3000 \
  -e GIT_URL=https://github.com/your-org/your-model-repo.git \
  -e GIT_TOKEN=ghp_xxx \
  umkabeaf/archimate-report:latest

Отчёт будет доступен на http://localhost:3000 через несколько секунд после старта (первая генерация выполняется синхронно перед запуском веб-сервера).

⁠Переменные окружения
ПеременнаяОбязательнаОписание
GIT_URLдаURL репозитория (https:// или git@...)
GIT_REFнетветка/тег/коммит, по умолчанию — HEAD дефолтной ветки
MODEL_PATHнетпуть к .archimate-файлу или корню coArchi-репозитория, если авто-детект неоднозначен
MODEL_FORMATнетauto (по умолчанию) / plain / coarchi
GIT_TOKENнет*HTTPS-токен (PAT)
GIT_USERNAME / GIT_PASSWORDнет*логин+пароль для HTTPS
GIT_SSH_PRIVATE_KEYнет*приватный SSH-ключ (PEM или base64) ⚠️ пока не протестировано end-to-end
GIT_SSH_KNOWN_HOSTSнетсодержимое known_hosts; без него — TOFU (accept-new)
WEBHOOK_SECRETнетесли задан — включает /webhook
WEBHOOK_PROVIDERнет**github / gitlab / generic — обязателен, если задан WEBHOOK_SECRET
WEBHOOK_PATHнетпуть эндпоинта, по умолчанию /webhook
PORTнетпорт раздачи, по умолчанию 3000
REGENERATE_ON_STARTнетtrue (по умолчанию) / false
GENERATION_TIMEOUTнеттаймаут одного прогона генерации, сек (по умолчанию 600)
USE_MODERN_CSSнетtrue (по умолчанию) / false — RU/EN + light/dark тема отчёта поверх штатного Archi-вида; false отдаёт немодифицированный отчёт Archi
LOG_LEVELнетDEBUG / INFO (по умолчанию) / WARNING / ERROR — детализация собственных логов сервиса
TZнеттаймзона контейнера

* — ровно один способ авторизации git (или ни одного — для публичных репозиториев). ** — обязательна только вместе с WEBHOOK_SECRET.

GET /status (тот же порт, что и отчёт) отдаёт JSON {generating, last_run_at, last_success, last_error} — используется как healthcheck.

⁠Тома

Три рабочие директории, ни одна не объявлена VOLUME в образе — без явного монтирования это обычные слои контейнера, не переживающие docker rm:

ПутьНазначениеМонтировать?
/data/reportГотовый HTML-отчёт, который раздаёт CaddyДа, если хотите, чтобы отчёт пережил пересоздание контейнера — особенно вместе с REGENERATE_ON_START=false
/data/repoРабочая копия git-репозитория с модельюОпционально — ускоряет повторные запуски (git fetch вместо полного clone)
/data/secretsВременные файлы авторизации (SSH-ключ/токен/пароль), права 600Нет — создаются заново из env-переменных при каждом запуске, монтирование только продлевает жизнь секретов на диске
docker run -d \
  --name archimate-report \
  -p 3000:3000 \
  -v archimate-report-data:/data/report \
  -e GIT_URL=https://github.com/your-org/your-model-repo.git \
  -e GIT_TOKEN=ghp_xxx \
  -e REGENERATE_ON_START=false \
  umkabeaf/archimate-report:latest
⁠Теги образа
  • :latest — последняя опубликованная версия.
  • :<версия Archi> (например :5.9.0) — конкретная версия Archi, зашитая в образ; фиксируйте её в продакшене вместо :latest.

Оба тега для одной публикации указывают на один и тот же multi-arch manifest list (amd64 + arm64) — не расходятся между собой.

Этот же образ зеркалируется на GitHub Container Registry — ghcr.io/umka-beaf/archimate-report⁠, тегами, синхронными с этой страницей.

⁠Архитектуры
  • linux/amd64 — официальная сборка Archi (Archi-Linux64-*.tgz).
  • linux/arm64 — Archi собран нативно из исходников (Tycho/Maven, linux/gtk/aarch64) в момент сборки образа. Никакого QEMU/box64 в рантайме — только на этапе docker buildx build для кросс-компиляции, сам работающий контейнер полностью нативный на обеих архитектурах.

Tag summary

Content type

Image

Digest

sha256:88eb58b87…

Size

363.9 MB

Last updated

20 days ago

docker pull umkabeaf/archimate-report