Набор утилит для DevOps-инженеров. Каждый инструмент живёт в отдельном каталоге и имеет собственный
README.md, сборочные файлы и тесты, поэтому релизы и версии у них независимые (<инструмент>-vX.Y.Z).
| Инструмент | Что делает | Стек | Версия |
|---|---|---|---|
Container image optimizer (cio) |
Анализирует Docker-образы: размер слоёв, устаревшие пакеты и уязвимости (Trivy), рекомендации по уменьшению размера и multi-stage сборке | Go + Docker Engine API + Trivy | 0.2.0 |
SQL backup, restore and clone (sqlbrc) |
Бэкап, восстановление и клонирование баз PostgreSQL: каталог бэкапов с политикой хранения, очередь задач с журналом, проверка готовности сервера (doctor), веб-интерфейс с API (serve), поставка в контейнере и режим postgres.mode: tcp |
Go + утилиты PostgreSQL 15 | 0.3.0 |
История изменений — в CHANGELOG.md каждого инструмента: cio,
sqlbrc. Формат — Keep a Changelog, нумерация — SemVer.
| Компонент | Версия | Кому нужен |
|---|---|---|
| Go | 1.26.8+ | обоим инструментам: сборка и тесты (минимальный патч зафиксирован в go.mod) |
| Docker Engine | 24+ (проверено на 29.8.0) | cio: образы и история слоёв через Docker API |
| Trivy | 0.74+ или доступный Docker (образ aquasec/trivy) |
cio: поиск уязвимостей; при отсутствии бинаря утилита запускает контейнер |
| PostgreSQL | 15, клиент той же мажорной версии, что сервер | sqlbrc: операции выполняются утилитами pg_dump, pg_restore, psql, pg_isready |
Linux + systemd + sudo |
Debian 12, Ubuntu 22.04+ и подобные | sqlbrc: служба живёт на сервере рядом с PostgreSQL (сам бинарь собирается и на Windows) |
cio — нужен доступ к демону Docker:
cd "Container image optimizer"
go build -o bin/cio.exe ./cmd/cio
./bin/cio.exe analyze postgres:15-alpinesqlbrc — проверка сервера с PostgreSQL (на Windows команда честно сообщит, что проверить не удалось):
cd "SQL backup restore clone"
go build -o bin/sqlbrc.exe ./cmd/sqlbrc
./bin/sqlbrc.exe doctor --config deploy/config.example.yamlВ каталоге каждого инструмента есть Makefile (для Linux/CI и для сред с установленным make):
cd "Container image optimizer" # или "SQL backup restore clone"
make build
make test
make lintПолное описание флагов, конфигурации, форматов отчёта и ограничений — в README инструмента
(cio, sqlbrc).
- Сообщения коммитов:
Add:/Update:/Fix:+ короткая суть изменения. - Definition of Done:
go vet ./...,go test ./..., линт без замечаний, обновлённыйREADME. - Процессы (ветвление, PR, релизы, чеклист нового инструмента) — в CONTRIBUTING.md.
- Политика безопасности общая для всех инструментов (поддерживаемые версии, область ответственности, выпуск исправлений) — в SECURITY.md.
- Локальные правила для AI-ассистента лежат в
.clinerules/— каталог намеренно исключён из Git (см..gitignore), поэтому в репозитории его нет.
GitHub Actions (.github/workflows):
| Workflow | Что проверяет |
|---|---|
ci.yml |
для каждого инструмента (cio и sqlbrc): линт (golangci-lint с правилами безопасности), достижимые уязвимости зависимостей (govulncheck), тесты (go vet, go test -race, покрытие в артефакте) и сборка бинаря; отдельный job собирает образ каждого инструмента и проверяет, что он запускается под непривилегированным пользователем (cio, sqlbrc) |
trivy-scan.yml |
уязвимости, секреты и конфигурацию образов обоих инструментов (cio, sqlbrc) и их файловой системы; находки CRITICAL/HIGH (без исправления) роняют прогон, и те же уровни уходят в GitHub Security |
codeql.yml |
статический анализ Go-кода обоих модулей (cio, sqlbrc), отчёты — в GitHub Security |
Матрицы workflow перечисляют каталоги инструментов (cio, sqlbrc): новый инструмент попадает
в них по чеклисту из CONTRIBUTING.md, поэтому набор проверок у всех
инструментов одинаковый.
В .trivyignore лежат исключения на уязвимости встроенного в образ сканера Trivy: каждое
с указанием срока годности (exp), после которого «ворота» снова падают и список нужно перепроверить.
Код cio и базовый образ проверяются без исключений.
Сторонние экшены закреплены по SHA, обновления приходят через Dependabot (.github/dependabot.yml):
модули Go, GitHub Actions и образы из Dockerfile.
Схема тегов — <инструмент>-vX.Y.Z. .github/workflows/release.yml запускается по тегам cio-vX.Y.Z
и sqlbrc-vX.Y.Z; общая часть — сборка бинарей (linux/amd64, linux/arm64, darwin/arm64,
windows/amd64), SHA256SUMS, SBOM в формате CycloneDX, attestation сборки и GitHub Release — вынесена
в вызываемый workflow .github/workflows/release-binaries.yml, а публикация образа в GitHub Packages
(сборка для linux/amd64 и linux/arm64, --sbom, --provenance, подпись cosign в keyless-режиме) —
в .github/workflows/release-image.yml: ghcr.io/devops-spb-ru/cio и ghcr.io/devops-spb-ru/sqlbrc.
Версионирование, чеклист релиза и публикация образа — в CONTRIBUTING.md,
порядок сообщения об уязвимостях — в SECURITY.md.
GPL-3.0 — см. LICENSE.