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
3 changes: 3 additions & 0 deletions .github/workflows/release-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,13 @@ jobs:
fi
# --sbom и --provenance кладут рядом с образом attestations: видно,
# из каких исходников и как собран образ.
# Дату сборки передаём так же, как в сборке бинарей: без неё бинарь
# в образе печатает «сборка unknown», и сверить образ с релизом нечем.
docker buildx build \
--platform linux/amd64,linux/arm64 \
--build-arg VERSION="$version" \
--build-arg REVISION="${GITHUB_SHA}" \
--build-arg DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
--provenance=true \
--sbom=true \
"${tags[@]}" \
Expand Down
7 changes: 6 additions & 1 deletion Container image optimizer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@

## [Unreleased]

Изменений пока нет.
### Исправлено

- образ `cio` собирался без коммита и даты сборки: `Dockerfile` подставлял только `main.version`,
а `release-image.yml` не передавал `--build-arg DATE`, поэтому `cio --version` внутри образа
печатал «commit none, сборка unknown», и сверить контейнер с бинарём из релиза было нечем.
Теперь значения подставляются так же, как в релизных бинарях.

## [0.2.0] - 2026-09-21

Expand Down
11 changes: 9 additions & 2 deletions Container image optimizer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
# (--group-add 0 в Docker Desktop, gid группы docker в Linux — см. README).
#
# Версия попадает в бинарь и в OCI-метки образа:
# docker build --build-arg VERSION=0.1.0 --build-arg REVISION=$(git rev-parse HEAD) -t cio:0.1.0 .
# docker build --build-arg VERSION=0.1.0 --build-arg REVISION=$(git rev-parse HEAD) \
# --build-arg DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) -t cio:0.1.0 .

# Патч Go фиксируется вместе с go.mod: внутри образа выключен автоподбор тулчейна
# (GOTOOLCHAIN=local), поэтому образ обязан содержать тулчейн не старше объявленного
Expand All @@ -21,13 +22,19 @@ ARG TRIVY_IMAGE=aquasec/trivy:0.74.0
ARG RUNTIME_IMAGE=alpine:3.21

FROM ${GO_IMAGE} AS builder
# Те же значения, что подставляют Makefile и релизный workflow: без commit и date
# `cio --version` внутри образа печатает «commit none, сборка unknown».
ARG VERSION=dev
ARG REVISION=none
ARG DATE=unknown
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY cmd ./cmd
COPY internal ./internal
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w -X main.version=${VERSION}" -o /out/cio ./cmd/cio
RUN CGO_ENABLED=0 go build -trimpath \
-ldflags="-s -w -X main.version=${VERSION} -X main.commit=${REVISION} -X main.date=${DATE}" \
-o /out/cio ./cmd/cio

# Trivy из официального образа: сканирование работает и внутри контейнера.
FROM ${TRIVY_IMAGE} AS trivy
Expand Down
10 changes: 8 additions & 2 deletions Container image optimizer/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -428,8 +428,14 @@ docker run --rm --group-add 0 -v /var/run/docker.sock:/var/run/docker.sock ghcr.
Версия Trivy внутри образа фиксирована и переопределяется на сборке (`--build-arg TRIVY_IMAGE=...`),
поэтому обновление сканера не меняет сборку неожиданно. Версия и ревизия исходников видны и снаружи —
в метках `org.opencontainers.image.version` и `org.opencontainers.image.revision`
(`docker image inspect`), и внутри — в выводе `cio --version`.
Локальная сборка с версией: `docker build --build-arg VERSION=0.2.0 -t cio:0.2.0 .`.
(`docker image inspect`), и внутри — в выводе `cio --version`: релизный workflow передаёт
`--build-arg VERSION`, `REVISION` и `DATE`, поэтому в образе видны версия, коммит и дата сборки.
Локальная сборка с теми же значениями:

```bash
docker build --build-arg VERSION=0.2.0 --build-arg REVISION=$(git rev-parse --short HEAD) \
--build-arg DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) -t cio:0.2.0 .
```

## Ограничения

Expand Down
8 changes: 8 additions & 0 deletions SQL backup restore clone/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@
нумерация версий — [SemVer](https://semver.org/lang/ru/); схема тегов (`sqlbrc-vX.Y.Z`) и порядок релиза —
в корневом [CONTRIBUTING.md](../CONTRIBUTING.md). Указатель по всем инструментам — [../CHANGELOG.md](../CHANGELOG.md).

## [Unreleased]

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

- образ `sqlbrc` собирался без даты сборки: `release-image.yml` не передавал `--build-arg DATE`,
поэтому `sqlbrc --version` из образа печатал «сборка unknown», и сверить контейнер с бинарём
из релиза было нечем. Дата подставляется так же, как в релизных бинарях.

## [0.3.0] - 2026-09-21

Веб-интерфейс и API: команда `serve` с теми же операциями, что и в CLI.
Expand Down
2 changes: 2 additions & 0 deletions SQL backup restore clone/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,8 @@ docker compose -f deploy/compose.example.yaml up -d --build
Стенд из `deploy/compose.example.yaml` поднимает PostgreSQL 15 и сервис рядом, публикует
интерфейс только на `127.0.0.1:8088` и хранит бэкапы и журнал задач в томах. Рабочие
`deploy/.env` и `deploy/config.yaml` в Git не попадают: в них пароль и настройки стенда.
В образе подставлены те же версия, коммит и дата сборки, что и в бинаре из релиза
(`sqlbrc --version` внутри контейнера), поэтому образ можно сверить с релизом.

## Конфигурация

Expand Down
Loading