#!/bin/sh # Сборка и подпись релиза bj для сервера обновлений (lic.zetit.ru). # # scripts/build-release.sh 2026.10.1 [канал] [опубликовать] # 2026.10.1 версия релиза # канал stable (по умолчанию) | beta | … # опубликовать publish — сразу загрузить на сервер (нужен репозиторий lic_Bridge-and-Join-s рядом) # # Версии компонентов: переменные BJ_SERVER_VERSION, INSTALLER_VERSION, COMPONENT_INSTALL_VERSION, NPR_VERSION, QUIKEXPORT_VERSION, # CRYPTO_VERSION (по умолчанию — версия релиза). Криптосервис берётся из CRYPTO_JAR # (по умолчанию /opt/bj/crypto-service.jar). Ключ подписи: RELEASE_KEY (~/keys/release-signing.priv). set -eu VERSION=${1:?версия релиза, например 2026.10.1} CHANNEL=${2:-stable} PUBLISH=${3:-} ROOT=$(cd "$(dirname "$0")/.." && pwd) DIST=${DIST:-$ROOT/dist/release-$VERSION} KEY=${RELEASE_KEY:-$HOME/keys/release-signing.priv} MOD=git.zetit.ru/zuevav/Bridge-and-Join-s rm -rf "$DIST" && mkdir -p "$DIST" cd "$ROOT" ver() { eval "v=\${$1:-}"; [ -n "$v" ] && echo "$v" || echo "$VERSION"; } echo "Сборка релиза $VERSION (канал $CHANNEL) в $DIST" go build -trimpath -ldflags "-s -w -X $MOD/internal/lkgateway.BuildVersion=$(ver BJ_SERVER_VERSION)" -o "$DIST/bj-server" ./cmd/bj-server CGO_ENABLED=0 go build -trimpath -ldflags "-s -w -X main.installerVersion=$(ver INSTALLER_VERSION)" -o "$DIST/bj-installer" ./cmd/bj-installer CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -o "$DIST/bj-component-install" ./cmd/bj-component-install CGO_ENABLED=0 go build -trimpath -ldflags "-s -w -X main.version=$(ver NPR_VERSION)" -o "$DIST/bj-npr" ./cmd/bj-npr ver NPR_VERSION > "$DIST/bj-npr.version" CGO_ENABLED=0 go build -trimpath -ldflags "-s -w -X main.version=$(ver QUIKEXPORT_VERSION)" -o "$DIST/bj-quikexport" ./cmd/bj-quikexport ver QUIKEXPORT_VERSION > "$DIST/bj-quikexport.version" ver BJ_SERVER_VERSION > "$DIST/bj-server.version" ver INSTALLER_VERSION > "$DIST/bj-installer.version" ver COMPONENT_INSTALL_VERSION > "$DIST/bj-component-install.version" JAR=${CRYPTO_JAR:-/opt/bj/crypto-service.jar} if [ -f "$JAR" ]; then cp "$JAR" "$DIST/crypto-service.jar" ver CRYPTO_VERSION > "$DIST/crypto-service.jar.version" fi go run ./cmd/bj-release build -dir "$DIST" -version "$VERSION" -channel "$CHANNEL" -key "$KEY" -keyid release -out "$DIST/manifest.json" if [ "$PUBLISH" = "publish" ]; then LIC=${LIC_REPO:-$ROOT/../lic_Bridge-and-Join-s} [ -x "$LIC/deploy/publish-release.sh" ] || LIC=$HOME/lic_Bridge-and-Join-s rm -f "$DIST"/*.version "$LIC/deploy/publish-release.sh" "$DIST" "$CHANNEL" fi