Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,28 @@ jobs:
with:
go-version-file: ${{ matrix.dir }}/go.mod
cache-dependency-path: ${{ matrix.dir }}/go.sum
# Версия Go живёт в двух файлах: директива go в go.mod и ARG GO_IMAGE в Dockerfile.
# Dependabot обновляет их разными PR (gomod и docker), а в образе сборки выключен
# автоподбор тулчейна (GOTOOLCHAIN=local): образ старее объявленной версии роняет
# сборку образа («go mod download» с кодом 1). Проверка бесплатная и падает раньше линта.
- name: Версия Go (go.mod ↔ Dockerfile)
working-directory: ${{ matrix.dir }}
run: |
declared=$(sed -n 's/^go \([0-9][0-9.]*\)$/\1/p' go.mod)
image=$(sed -n 's/^ARG GO_IMAGE=golang:\([0-9][0-9.]*\).*/\1/p' Dockerfile)
if [ -z "$declared" ] || [ -z "$image" ]; then
echo "::error::не удалось прочитать версию Go (go.mod: '$declared', GO_IMAGE: '$image')"
exit 1
fi
if [ "$declared" != "$image" ]; then
if [ "$(printf '%s\n%s\n' "$declared" "$image" | sort -V | head -n1)" = "$image" ]; then
echo "::error file=${{ matrix.dir }}/Dockerfile::образ сборки golang:$image старее объявленной в go.mod версии $declared — go mod download упадёт (в образе GOTOOLCHAIN=local)"
exit 1
fi
echo "::warning file=${{ matrix.dir }}/Dockerfile::go.mod объявляет go $declared, а образ сборки — golang:$image: синхронизируйте версии"
fi
echo "версия Go: go.mod $declared, образ golang:$image"

- name: golangci-lint
uses: golangci/golangci-lint-action@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a # v9.3.0
with:
Expand Down
10 changes: 6 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,10 @@ go build -trimpath -o bin/sqlbrc.exe ./cmd/sqlbrc # для sqlbrc (.exe — т
1. Убедиться, что CI на `main` зелёный: `Линт`, `Уязвимости зависимостей`, `Тесты` и `Сборка`
для нужного инструмента, а если у него есть контейнерная поставка — ещё и `Docker-образ`.
2. В `CHANGELOG.md` инструмента (`Container image optimizer/CHANGELOG.md` или
`SQL backup restore clone/CHANGELOG.md`) переименовать `## [Unreleased]` в `## [X.Y.Z] - ГГГГ-ММ-ДД`
(например, `## [0.1.0] - 2026-10-01`), сразу добавить новый пустой `## [Unreleased]`
и ссылки сравнения в конце файла — на теги того же инструмента.
`SQL backup restore clone/CHANGELOG.md`) в заголовке раздела `## [X.Y.Z] - Unreleased` заменить
пометку `Unreleased` на дату выпуска (например, `## [0.1.0] - 2026-10-01`), сразу завести новую
секцию следующей версии с пометкой `- Unreleased` и ссылки сравнения в конце файла поправить
на теги того же инструмента.
3. Влить изменения в `main` и поставить аннотированный тег:
`git tag -a <инструмент>-vX.Y.Z -m "<инструмент> X.Y.Z"`.
4. Отправить тег: `git push origin <инструмент>-vX.Y.Z`.
Expand Down Expand Up @@ -190,7 +191,8 @@ docker push ghcr.io/devops-spb-ru/cio:0.1.0
строку в корневом `CHANGELOG.md`, строку в `SECURITY.md` (поддерживаемые версии, область,
«вне области»), ссылку на README инструмента в `.github/ISSUE_TEMPLATE/config.yml` и варианты
инструмента в формах issue.
6. Заведите `CHANGELOG.md` в каталоге инструмента (раздел `## [Unreleased]`), добавьте модуль
6. Заведите `CHANGELOG.md` в каталоге инструмента (раздел `## [X.Y.Z] - Unreleased`, где `X.Y.Z` —
версия следующего релиза, а дата подставляется при выпуске), добавьте модуль
Go, а при контейнерной поставке — и образы из `Dockerfile` в `.github/dependabot.yml`.

## Безопасность
Expand Down
10 changes: 7 additions & 3 deletions Container image optimizer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
нумерация версий — [SemVer](https://semver.org/lang/ru/); схема тегов (`cio-vX.Y.Z`) и порядок релиза —
в корневом [CONTRIBUTING.md](../CONTRIBUTING.md). Указатель по всем инструментам — [../CHANGELOG.md](../CHANGELOG.md).

## [Unreleased]
## [0.3.0] - Unreleased

### Исправлено

Expand All @@ -20,7 +20,11 @@
в `go.mod`. Патч `1.25.14` не соответствовал требованиям зависимостей и оставлял в стандартной
библиотеке достижимые уязвимости;
- `govulncheck` обновлён до `v1.8.0` в CI и в документации — его модуль требует Go ≥ 1.26, что теперь
соответствует `go.mod`.
соответствует `go.mod`;
- версия Go в `go.mod` сверяется с `ARG GO_IMAGE` из `Dockerfile` — в job `lint` (`ci.yml`) и в локальном
скрипте проверок. Dependabot обновляет эти файлы разными PR, а образ сборки старше объявленного
тулчейна роняет сборку образа с невнятной ошибкой `go mod download`: проверка падает раньше линта
и называет оба файла.

## [0.2.0] - 2026-09-21

Expand Down Expand Up @@ -123,6 +127,6 @@
- Размер слоя берётся из метаданных Docker, а не из распакованного файлового дерева.
- Trivy требует доступа к сети для обновления базы уязвимостей; без сети отчёт по слоям всё равно строится.

[Unreleased]: https://github.com/DevOps-spb-ru/DevOps-Engineer-Tools/compare/cio-v0.2.0...HEAD
[0.3.0]: https://github.com/DevOps-spb-ru/DevOps-Engineer-Tools/compare/cio-v0.2.0...HEAD
[0.2.0]: https://github.com/DevOps-spb-ru/DevOps-Engineer-Tools/compare/cio-v0.1.0...cio-v0.2.0
[0.1.0]: https://github.com/DevOps-spb-ru/DevOps-Engineer-Tools/releases/tag/cio-v0.1.0
11 changes: 8 additions & 3 deletions SQL backup restore clone/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
нумерация версий — [SemVer](https://semver.org/lang/ru/); схема тегов (`sqlbrc-vX.Y.Z`) и порядок релиза —
в корневом [CONTRIBUTING.md](../CONTRIBUTING.md). Указатель по всем инструментам — [../CHANGELOG.md](../CHANGELOG.md).

## [Unreleased]
## [0.4.0] - Unreleased

### Исправлено

Expand All @@ -19,7 +19,11 @@
с образом сборки ломало сборку образа (`go mod download` падал с кодом 1), а патч `1.26.0`
оставлял в стандартной библиотеке достижимые уязвимости (`crypto/tls`, `encoding/asn1`, `net/http`);
- `govulncheck` обновлён до `v1.8.0` в CI и в документации — его модуль требует Go ≥ 1.26, что теперь
соответствует `go.mod`.
соответствует `go.mod`;
- версия Go в `go.mod` сверяется с `ARG GO_IMAGE` из `Dockerfile` — в job `lint` (`ci.yml`) и в локальном
скрипте проверок. Dependabot обновляет эти файлы разными PR, а образ сборки старше объявленного
тулчейна роняет сборку образа с невнятной ошибкой `go mod download`: проверка падает раньше линта
и называет оба файла.

## [0.3.0] - 2026-09-21

Expand Down Expand Up @@ -171,6 +175,7 @@
- PITR и инкрементальные бэкапы не поддерживаются: план — логический дамп `pg_dump --format custom`.
- Сервис рассчитан на один сервер (PostgreSQL и каталог бэкапов рядом), подключение через локальный сокет.

[0.4.0]: https://github.com/DevOps-spb-ru/DevOps-Engineer-Tools/compare/sqlbrc-v0.3.0...HEAD
[0.3.0]: https://github.com/DevOps-spb-ru/DevOps-Engineer-Tools/compare/sqlbrc-v0.2.0...sqlbrc-v0.3.0
[0.2.0]: https://github.com/DevOps-spb-ru/DevOps-Engineer-Tools/compare/sqlbrc-v0.1.0...sqlbrc-v0.2.0
[0.1.0]: https://github.com/DevOps-spb-ru/DevOps-Engineer-Tools/releases/tag/sqlbrc-v0.1.0
[0.1.0]: https://github.com/DevOps-spb-ru/DevOps-Engineer-Tools/releases/tag/sqlbrc-v0.1.0
Loading