Documentation
¶
Overview ¶
Package release держит утверждение о ГОДНОСТИ модуля службы как продукта, который собирает ПОСТОРОННИЙ.
Предмет один: ревизия, упакованная правилами модуля Go, обязана собираться ВНЕ дерева монорепо — без соседних каталогов, без наложения рабочих копий, без объемлющего файла рабочего пространства и без подмены пути зависимости. С того дня, как служба выносится отдельным продуктом, «дерево собирается» и «модуль собирается у постороннего» — РАЗНЫЕ утверждения, и первое второго не доказывает.
Расходятся они тихо и в обе стороны:
- файл, нужный сборке, но НЕ отслеживаемый git (сгенерированный стаб, забытый `git add`), в нашем дереве есть, а у постороннего его нет вовсе: упаковывается отслеживаемое;
- объемлющий файл рабочего пространства монорепо подставляет соседний модуль ПУТЁМ; у постороннего такого файла нет, и зависимость обязана резолвиться пином;
- `replace` на локальный путь у нас резолвится, у постороннего — нет (запрет полирепо-правила: подмена пути в объявлении модуля);
- импорт каталога, который правила модуля наружу не выпускают, собирается внутри своего дерева и отвергается у всякого другого потребителя.
Прод-кода здесь нет намеренно: утверждения живут в пробах, а этот файл существует, чтобы каталог был пакетом Go — каталог из одних *_test.go роняет `go build ./...` с «no non-test Go files».