No description
  • Dockerfile 100%
Find a file
AlexRus1234 bbb464493f fix: build-homepage — BUILDTIME в RFC3339 (страница Homepage падала) + источник Archive/gethomepage-homepage
BUILDTIME=$(date +%s) уходит в NEXT_PUBLIC_BUILDTIME, upstream форматирует его
через new Intl.DateTimeFormat().format(new Date(buildTime)) в футере «О
программе»; строка из секунд («1789826350») даёт Invalid Date → RangeError,
и ErrorBoundary кладёт весь дашборд («Something went wrong: date value is not
finite in DateTimeFormat.format()»). Ловится на первом рендере после
пересоздания контейнера: prerender index с пустым конфигом, настройки с
hideVersion: true доезжают только через ISR-регенерацию (кнопка обновления).
Апстрим передаёт в это build-arg OCI-метку created (RFC3339), теперь так же.
2026-10-04 16:11:56 +03:00
.forgejo/workflows fix: build-homepage — BUILDTIME в RFC3339 (страница Homepage падала) + источник Archive/gethomepage-homepage 2026-10-04 16:11:56 +03:00
dashy feat: перевести dnf и apk на Хражевник (пакетные менеджеры через кеш-прокси), удалить populate-rpm-repo 2026-09-13 11:25:48 +03:00
docs fix: build-memos — обход бага Nora (pnpm ставится npm-клиентом) и раскладка v0.31.0 2026-09-29 12:37:28 +03:00
element-web fix: build-element-web — ставить ca-certificates в runtime (в nginx:alpine-slim только bundle, без update-ca-certificates) 2026-09-20 19:17:04 +03:00
homepage fix: build-homepage — pnpm@10.34.5 вместо 11 (с 11 ignored build scripts — жёсткая ошибка ERR_PNPM_IGNORED_BUILDS) 2026-09-19 16:16:11 +03:00
linkstack fix: linkstack — доверять reverse-proxy (TrustProxies '*'), иначе https за Caddy отдаёт mixed content 2026-09-20 15:18:45 +03:00
memos fix: build-memos — обход бага Nora (pnpm ставится npm-клиентом) и раскладка v0.31.0 2026-09-29 12:37:28 +03:00
mortis feat: перевести dnf и apk на Хражевник (пакетные менеджеры через кеш-прокси), удалить populate-rpm-repo 2026-09-13 11:25:48 +03:00
nora feat: перевести dnf и apk на Хражевник (пакетные менеджеры через кеш-прокси), удалить populate-rpm-repo 2026-09-13 11:25:48 +03:00

Документация пайплайнов сборки образов

Репозиторий container-build содержит Forgejo Actions workflow-ы для сборки и публикации контейнерных образов во внутренний реестр git.yadr00.internal/build/....

Все пайплайны:

  • запускаются только вручную (workflow_dispatch);
  • выполняются в контейнере quay.io/containers/podman:latest на docker-runner;
  • используют podman --storage-driver=vfs для сборки;
  • публикуют образы от имени пользователя alexrus через секрет UPLOAD_TOKEN;
  • устанавливают доверие к локальному УЦ step-ca (172.20.0.1:9000);
  • ставят системные пакеты через RPM-репозитории Хражевника (khrazhevnik.panelka.yadr01.internal, priority=1) с --setopt=install_weak_deps=False — слабые зависимости не ставятся неосознанно;
  • очищают рабочее пространство и кеш Podman в финальном шаге (if: always()).

Описания пайплайнов

Пайплайн Файл workflow Документация
LinkStack .forgejo/workflows/build-linkstack.yml build-linkstack.md
Memos .forgejo/workflows/build-memos.yml build-memos.md
NORA .forgejo/workflows/build-nora.yml build-nora.md
Dashy .forgejo/workflows/build-dashy.yml build-dashy.md
Mortis .forgejo/workflows/build-mortis.yml build-mortis.md
Homepage .forgejo/workflows/build-homepage.yml build-homepage.md
Element Web .forgejo/workflows/build-element-web.yml build-element-web.md

Сводная таблица особенностей

Параметр LinkStack Memos NORA Dashy Mortis Homepage Element Web
Источник версии образа входной параметр входной параметр входной параметр входной параметр входной параметр входной параметр входной параметр
Количество исходных репо 2 (docker + LinkStack) 1 (memos) 1 (nora) 1 (dashy) 1 (mortis) 1 (homepage) 1 (element-web)
Дополнительные файлы из CB Containerfile Containerfile Containerfile, config.toml Containerfile Containerfile Containerfile Containerfile, configs/nginx/nginx.conf
Сертификат step-ca в образе да да нет да да да да
Компиляция в раннере нет нет нет нет нет нет нет
OCI-метки нет нет нет нет нет нет да (version, created)
Build-arg нет нет нет нет да (VERSION) да (VERSION, REVISION, BUILDTIME) да (VERSION, CREATED)

Пакетные менеджеры: Nora и Хражевник

Внешние зависимости пайплайнов и Containerfile'ов идут через Nora (nora.panelka.yadr01.internal) и Хражевник (khrazhevnik.panelka.yadr01.internal) там, где формат поддерживается:

  • RPM (dnf) — кеш-прокси Хражевника /rpm/fedora/ + /rpm/fedora-updates/ с priority=1 (раннеры CI; дефолтные fedora-репо образа остаются fallback'ом, т.к. базовый fedora у quay.io/containers/podman:latest плавается);
  • APK (alpine) — кеш-прокси Хражевника /apk/alpine/... во всех стадиях Containerfile'ов (репозитории переписываются sed'ом, корень step-ca дописывается в bundle до первого apk);
  • Go-модули — GOPROXY=https://nora.panelka.yadr01.internal/go,direct (mortis, memos backend);
  • npm-пакеты — rewrite registry на https://nora.panelka.yadr01.internal/npm (memos, dashy — sed по lock-файлу; homepage, element-web — .npmrc в корне проекта);
  • Corepack (pnpm/yarn-бандлы) — COREPACK_NPM_REGISTRY=https://nora.panelka.yadr01.internal/npm/ (memos, dashy); ENV обязан стоять ДО первого вызова corepack/yarn. Не работает в homepage и element-web: corepack ходит на {registry}/{name}/{version} с corgi-Accept, где Nora отдаёт документ без dist — там pnpm ставится npm-клиентом (npm install -g pnpm@… --registry=…nora…/npm/);
  • Cargo-крейты — sparse index replace-with = "nora" в .cargo/config.toml (nora);
  • Базовые образы — nora.panelka.yadr01.internal/library/... (все Containerfile).

Не проксируются (формат отсутствует и в Nora v1.1.0, и в Хражевнике v1), идут напрямую по публичным CA после update-ca-certificates:

  • PHP/Composer (packagist.org) — linkstack;
  • GitHub-тарболлы pnpm (github:…-зависимости: matrix-js-sdk#develop, eslint-plugin-element-call) — element-web.