Skip to content

Add: проверка версии Go (go.mod ↔ Dockerfile) в CI - #11

Merged
DevOps-spb-ru merged 4 commits into
mainfrom
chore/go-1.26
Sep 22, 2026
Merged

DevOps-spb-ru merged 4 commits into
mainfrom
chore/go-1.26

Conversation

@DevOps-spb-ru

Copy link
Copy Markdown
Owner

Pull Request

Что сделано

Защита от рассинхрона версии Go между go.mod и образом сборки плюс приведение журналов
изменений к версиям будущих релизов.

  • .github/workflows/ci.yml, job lint: новый шаг «Версия Go (go.mod ↔ Dockerfile)» сравнивает
    директиву go из go.mod с ARG GO_IMAGE из Dockerfile. Образ старее объявленной версии
    роняет прогон и называет оба файла: в образе сборки выключен автоподбор тулчейна
    (GOTOOLCHAIN=local), поэтому несоответствие всплывало невнятной ошибкой go mod download при
    сборке образа. Образ новее go.mod даёт предупреждение — пин можно доделать вторым PR.
    Dependabot обновляет эти два файла разными PR (экосистемы gomod и docker), и рассинхрон уже
    доходил до main.
  • Container image optimizer/CHANGELOG.md, SQL backup restore clone/CHANGELOG.md: незарелиженные
    записи перенесены в секции будущих релизов — ## [0.3.0] - Unreleased и ## [0.4.0] - Unreleased,
    ссылки сравнения идут от последних тегов до HEAD.
  • CONTRIBUTING.md: чеклист релиза и порядок заведения нового инструмента согласованы с новой
    схемой секций (в заголовке — версия, дата подставляется при выпуске).

Тип изменения

  • Новая функциональность
  • Исправление
  • Документация
  • CI/инфраструктура
  • Рефакторинг без изменения поведения

Как проверено

  • gofmt -l cmd internal — пусто
  • go vet ./...
  • go test ./... -count=1
  • golangci-lint run ./... (или .work/lint-docker.ps1)
  • Проверка на живом окружении: cio — .work/smoke-cio.ps1; sqlbrc — .work/smoke-container.ps1 или .work/smoke-serve.ps1
  • Обновлены README.md и CHANGELOG.md затронутого инструмента (README не менялся: флаги CLI и формат JSON-отчёта не затронуты)
  • Если затронуты CI, зависимости или документы репозитория — обновлены матрицы workflow, SECURITY.md, README.md (матрицы workflow не менялись: шаг добавлен в существующий job lint; SECURITY.md и README.md не затрагиваются)
  • При релизе: секция CHANGELOG.md совпадает с тегом <инструмент>-vX.Y.Z

Дополнительно проверены сценарии самого шага: синхронные версии, образ старее go.mod, образ
новее go.mod, мусорный тег образа; оба инструмента прогнаны локально на тулчейне из go.mod
(go1.26.8), workflows прошли validate-workflows.py, actionlint и zizmor без находок.

Влияние и риски

  • Изменения пользовательского поведения: нет, код инструментов не менялся — только CI, журналы
    изменений и порядок релиза.
  • Обратная совместимость: сохраняется. Секции журнала теперь содержат версию будущего релиза
    (## [0.3.0] - Unreleased), дата и ссылка на тег подставляются при выпуске.
  • Возможные риски: шаг падает и на нестандартном теге образа (golang:latest) — это ожидаемо,
    версия тулчейна должна быть закреплена явно.

- ci.yml: new step in the lint job compares the go directive in go.mod with ARG GO_IMAGE
  in the Dockerfile. An image older than the declared toolchain fails (GOTOOLCHAIN=local
  makes "go mod download" fail while building the image), a newer one only warns, so the
  pin can still be finished in a second PR. Dependabot bumps these two files in separate
  PRs (gomod and docker), and the drift already reached main once
- CHANGELOG (cio, sqlbrc): Unreleased entries for the new check
…sections

- cio: entries now live under "## [0.3.0] - Unreleased", comparison link goes from
  cio-v0.2.0 to HEAD
- sqlbrc: entries now live under "## [0.4.0] - Unreleased", comparison link added from
  sqlbrc-v0.3.0 to HEAD
The version, the date and the tag in the comparison link are substituted when the release
is tagged
CONTRIBUTING.md still told to rename "## [Unreleased]" and to add an empty one back, but
unreleased entries now live under "## [X.Y.Z] - Unreleased" in both changelogs: the
release step replaces the marker with the date and starts the section of the next version
@DevOps-spb-ru DevOps-spb-ru self-assigned this Sep 22, 2026
@DevOps-spb-ru
DevOps-spb-ru merged commit c2d99a3 into main Sep 22, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant