36 lines
2.1 KiB
Markdown
36 lines
2.1 KiB
Markdown
# 🧹 Сверять версию Go в образе с директивой go.mod
|
||
|
||
- **Тип:** chore
|
||
- **Категория:** Очередь
|
||
- **Зачем:** Образ гейт не собирает, и расхождение версий прошло весь конвейер молча: task image упал бы уже на сервере.
|
||
|
||
Случай записан журналом дефектов `docs/review.md` за 2026-08-12: `go mod tidy`
|
||
поднял директиву до 1.25, `Dockerfile` остался на `golang:1.24-alpine` с
|
||
`GOTOOLCHAIN=local`, и шесть проходов ревью вместе с восемью шагами гейта
|
||
показали зелёное. Нашлось случайным свойством прогона, а не устройством
|
||
проверок.
|
||
|
||
Сборку образа в гейт не заводим — она дорога. Дешёвая замена: сравнение двух
|
||
строк.
|
||
|
||
## Затрагивает
|
||
|
||
- набор шагов `task gate` в `Taskfile.yml`;
|
||
- директива `go` в `go.mod` и сборочный слой `Dockerfile` как источники
|
||
сравнения;
|
||
- семантика гейта в `CLAUDE.md`, раздел «Гейт».
|
||
|
||
## Критерии приёмки
|
||
|
||
- Расхождение версий роняет гейт. Оракул — прогон `task gate` на дереве, где
|
||
версия в `Dockerfile` понижена на минор: шаг краснеет и называет оба числа.
|
||
- Совпадение гейт не роняет. Оракул — `task gate` на неизменённом дереве.
|
||
- Шаг не требует docker и работает без сети. Оракул — прогон с
|
||
`DOCKER_HOST=/dev/null`.
|
||
|
||
## Рамки
|
||
|
||
Сравнение строковое: `Dockerfile` называет `golang:<major>.<minor>-alpine`, а
|
||
`go.mod` — `<major>.<minor>.<patch>`. Сверяются мажор и минор; патч сборочного
|
||
образа своей жизнью живёт законно.
|