release

command
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2026 License: GPL-3.0 Imports: 21 Imported by: 0

Documentation

Overview

Команда release собирает релиз qwdtt-cli: бинари для каждой платформы, zip для Windows и tar.gz для Linux и macOS.

go run ./scripts/release
go run ./scripts/release -version 0.1.0
go run ./scripts/release -platforms windows/amd64 -out C:\tmp\qwdtt-cli

Сборка воспроизводима из чистого клона: команде нужны go, git и доступ к wintun.net (или уже скачанный архив Wintun, см. -wintun-archive). Для каждой платформы из -platforms делается

go build -trimpath -ldflags "-s -w -X main.version=… -X main.commit=…"

с CGO_ENABLED=0 — cgo в проекте не нужен, а без него кросс-сборка не ищет чужой компилятор. Версия и коммит попадают в `qwdtt-cli version` через переменные cmd/qwdtt-cli/main.go.

Раскладка результата (по умолчанию dist/):

dist/qwdtt-cli_<версия>_windows_amd64/qwdtt-cli.exe
dist/qwdtt-cli_<версия>_linux_amd64/qwdtt-cli
dist/qwdtt-cli_<версия>_linux_arm64/qwdtt-cli
dist/qwdtt-cli_<версия>_darwin_arm64/qwdtt-cli
dist/qwdtt-cli_<версия>_windows_amd64.zip
    каталог qwdtt-cli_<версия>_windows_amd64/ с qwdtt-cli.exe, wintun.dll,
    wintun-LICENSE.txt, THIRD_PARTY_NOTICES.txt, qwdtt-cli.example.toml,
    LICENSE, README.md
dist/qwdtt-cli_<версия>_linux_amd64.tar.gz
dist/qwdtt-cli_<версия>_linux_arm64.tar.gz
dist/qwdtt-cli_<версия>_darwin_arm64.tar.gz
    каталог qwdtt-cli_<версия>_<платформа>/ с qwdtt-cli,
    THIRD_PARTY_NOTICES.txt, qwdtt-cli.example.toml, LICENSE, README.md

wintun.dll (режим -datapath tun) кладётся в zip пакетом scripts/internal/wintun — тем же, что у команды wintun: фиксированная версия, проверка SHA256 архива и, на Windows, подписи DLL. В репозитории её нет. THIRD_PARTY_NOTICES.txt — лицензии всего, что слинковано в бинарь, — собирает `go run ./scripts/notices` на каждую сборку.

Внутри и zip, и tar.gz файлы лежат в каталоге с именем архива: распакованное не смешается с соседними файлами. В tar.gz у qwdtt-cli стоит право на исполнение (0755), у остальных файлов — 0644, на какой бы системе ни шла сборка: архив пишется здесь же, а не tar системы — tar на Windows права на исполнение не ставит.

В конце команда запускает `qwdtt-cli version` у бинаря для своей платформы и проверяет, что версия и коммит подставились.

Флаги:

-version         строка версии; по умолчанию `git describe --tags --always --dirty`,
                 то есть тег, если он есть, иначе короткий коммит; суффикс
                 -dirty при незакоммиченных изменениях
-out             каталог результата; по умолчанию dist в корне репозитория.
                 Содержимое для собираемых платформ перезаписывается, чужие
                 файлы не трогаются
-platforms       платформы через запятую в виде os/arch; по умолчанию
                 windows/amd64,linux/amd64,linux/arm64,darwin/arm64
-nozip           не собирать архивы — ни zip, ни tar.gz (и не брать wintun.dll)
-wintun-archive  уже скачанный wintun-<версия>.zip — сборка без сети

Перенесена с PowerShell (scripts/build-release.ps1). Те же бинари с тем же хешем, те же tar.gz после распаковки, те же записи в zip.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL