No description
Find a file
2026-09-24 08:47:02 +03:00
.forgejo/workflows feat: перевести apk в пайплайнах на Хражевник (пакетные менеджеры через кеш-прокси) 2026-09-13 11:02:22 +03:00
docs docs: переименовать bin_build в bin-build для унификации 2026-09-24 08:47:02 +03:00

Документация по пайплайнам сборки (bin-build)

В этом каталоге находится детальное описание каждого CI/CD пайплайна, определённого в .forgejo/workflows/.

Пайплайн Файл workflow Документация Что собирает
Build Sovereign Caddy (with L4) build-caddy-local.yml build-caddy-local.md Кастомный Caddy с плагином L4
Build and Push SFTPGo build-sftpgo.yml build-sftpgo.md Статический бинарник SFTPGo
Build and Push Webhook build-webhook.yml build-webhook.md Статический бинарник Webhook

Общие принципы

Все пайплайны в этом репозитории работают по единой схеме:

  1. Ручной запуск (workflow_dispatch) — запуск выполняется оператором через интерфейс Forgejo с указанием версии/тега для сборки. По умолчанию параметр равен latest.
  2. Режим latest — если указано latest, пайплайн сам определяет последнюю версию, запрашивая теги из внутреннего Git‑зеркала (git ls-remote --tags) и выбирая старший семантический тег (sort -V | tail -1). Если указан конкретный тег — используется он.
  3. Проверка наличия в реестре — перед сборкой пайплайн проверяет, существует ли уже бинарник этой версии в Forgejo Registry (GET‑запрос к API v1). Если бинарник уже загружен — пайплайн завершается успешно без сборки (не ошибка).
  4. Изоляция в Docker‑контейнере — сборка идёт в образе компилятора (golang:alpine или caddy:builder), зеркалируемом через Nora (nora.panelka.yadr01.internal/library/...). Сертификат step-ca добавляется в system bundle (update-ca-certificates), поэтому контейнер доверяет одновременно и внутренним, и публичным CA.
  5. Доверие к внутреннему CA — корневой сертификат скачивается с https://172.20.0.1:9000/roots.pem и используется как для Git, так и для HTTPS‑запросов к Forgejo. Тот же сертификат применяется при запросе тегов и проверке реестра.
  6. Использование внутренних зеркал — исходники и модули берутся не из публичных источников, а с git.yadr00.internal и через Nora‑прокси модулей Go (GOPROXY=https://nora.panelka.yadr01.internal/go,direct). Пакетный менеджер apk ходит только через Хражевник (https://khrazhevnik.panelka.yadr01.internal/apk/alpine/..., кеш‑прокси dl-cdn.alpinelinux.org); Nora используется для зеркалирования образов контейнеров и Go‑модулей.
  7. Отключение GOSUMDB — GOSUMDB=off отключает проверку сумм модулей через sum.golang.org.
  8. Статическая сборка — где возможно, используется CGO_ENABLED=0, чтобы бинарник работал на любом Linux/amd64 без внешних библиотек.
  9. Публикация в Forgejo Registry — готовый бинарник загружается через curl --upload-file в generic‑реестр по пути https://git.yadr00.internal/api/packages/Build/generic/<name>/<version>/<file> с авторизацией по секрету UPLOAD_TOKEN.