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