mirror of
https://github.com/hackdiaz-dev/free-turn-proxy.git
synced 2026-10-12 09:41:53 +02:00
dd8233208c
Проход 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
96 lines
2.4 KiB
YAML
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]
|