Files
free-turn-proxy/Taskfile.yml
T
samosvalishe dd8233208c fix(lint): устранить замечания golangci-lint + переход на dockers_v2
Проход lint (52 → 0):
- vkauth/token: переименовать затенённый err (govet shadow x3)
- udprelay/loop: явный _ = conn.Close() (errcheck x2)
- captcha/manual: ReadHeaderTimeout + html.EscapeString (G112, G705)
- proxy/tcpfwd: хелпер nonNegUint64 для байтовых счётчиков io.Copy (G115)
- proxy/bondclient, wire/bondframe: bounds-проверки на len->uint16/uint32
- wire/srtpmimicry: задокументирована усечка RTP seq mod 2^16
- dnsdial/doh: bounds-проверка + binary.BigEndian.PutUint16
- captcha/slider: clamp luma до 255 перед конверсией uint8
- vkauth/types: обоснованный nolint для публичных учёток VK SDK

Новый пакет internal/randx — Intn/IntN/Float64 на crypto/rand, drop-in замена
math/rand. Мигрированы все места antifingerprint-jitter (~22) в captcha, slider,
namegen, vkauth, udprelay.

GoReleaser:
- bump GORELEASER_VERSION v2.5.0 → v2.15.4 в Taskfile и обоих CI-workflow;
  текущий синтаксис .goreleaser.yaml (archives.ids, format_overrides.formats)
  требует v2.8+
- миграция dockers + docker_manifests → dockers_v2 (единый блок, multi-platform
  buildx); Dockerfile.goreleaser использует конвенцию ARG TARGETPLATFORM
2026-05-23 01:37:42 +03:00

96 lines
2.4 KiB
YAML

version: '3'
vars:
BINARIES: client server
VERSION:
sh: git describe --tags --always --dirty 2>/dev/null || echo dev
LDFLAGS: -s -w -checklinkname=0 -X main.version={{.VERSION}}
GOLANGCI_VERSION: v2.12.2
GOVULN_VERSION: v1.1.4
GORELEASER_VERSION: v2.15.4
tasks:
default:
cmds:
- task --list
silent: true
build:
desc: Build host binaries (client + server) to dist/
cmds:
- for: { var: BINARIES }
cmd: go build -ldflags "{{.LDFLAGS}}" -trimpath -o dist/{{.ITEM}} ./cmd/{{.ITEM}}
build:all:
desc: Cross-compile all targets via goreleaser snapshot
cmds:
- goreleaser release --snapshot --clean --skip=publish,sign
test:
desc: Run unit tests with race detector
cmds:
- go test -race -count=1 ./...
test:cover:
desc: Run tests with coverage report (cover.html)
cmds:
- go test -race -count=1 -coverprofile=cover.out ./...
- go tool cover -html=cover.out -o cover.html
lint:
desc: Run golangci-lint
cmds:
- golangci-lint run --timeout=5m ./...
fmt:
desc: Format code (gofmt + goimports)
cmds:
- gofmt -w .
- goimports -w .
fmt:check:
desc: Verify formatting (fails on diff)
cmds:
- cmd: |
out=$(gofmt -l .)
if [ -n "$out" ]; then
echo "Files need formatting:"
echo "$out"
exit 1
fi
vet:
desc: Run go vet
cmds:
- go vet ./...
vuln:
desc: Run govulncheck
cmds:
- govulncheck ./...
tidy:
desc: Tidy go.mod / go.sum
cmds:
- go mod tidy
ci:
desc: Run full CI suite locally (fmt-check, vet, lint, test, vuln)
deps: [fmt:check, vet, lint, test, vuln]
tools:install:
desc: Install dev tools (golangci-lint, govulncheck, goreleaser, goimports)
cmds:
- go install golang.org/x/tools/cmd/goimports@latest
- go install golang.org/x/vuln/cmd/govulncheck@{{.GOVULN_VERSION}}
- go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@{{.GOLANGCI_VERSION}}
- go install github.com/goreleaser/goreleaser/v2@{{.GORELEASER_VERSION}}
clean:
desc: Remove build artifacts
cmds:
- cmd: rm -rf dist/ cover.out cover.html
platforms: [linux, darwin]
- cmd: powershell -Command "Remove-Item -Recurse -Force dist,cover.out,cover.html -ErrorAction SilentlyContinue"
platforms: [windows]