mirror of
https://github.com/hackdiaz-dev/free-turn-proxy.git
synced 2026-10-12 09:41:53 +02:00
141 lines
4.6 KiB
YAML
141 lines
4.6 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.6.0
|
|
GOIMPORTS_VERSION: v0.49.0
|
|
GORELEASER_VERSION: v2.17.1
|
|
TASK_VERSION: v3.52.0
|
|
|
|
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:
|
|
# checksum.extra_files глобит mobile-dist, а снапшот идёт без mobile-таргетов
|
|
- cmd: mkdir -p mobile-dist && touch mobile-dist/freeturn.aar mobile-dist/freeturn-sources.jar mobile-dist/Mobile.xcframework.zip
|
|
platforms: [linux, darwin]
|
|
- cmd: powershell -Command "New-Item -ItemType Directory -Force mobile-dist > $null; @('freeturn.aar','freeturn-sources.jar','Mobile.xcframework.zip') | ForEach-Object { if (-not (Test-Path \"mobile-dist/$_\")) { New-Item -ItemType File \"mobile-dist/$_\" > $null } }"
|
|
platforms: [windows]
|
|
- goreleaser release --snapshot --clean --skip=publish,sign
|
|
|
|
build:ios:
|
|
desc: Build iOS XCFramework to dist/Mobile.xcframework
|
|
platforms: [darwin]
|
|
cmds:
|
|
- rm -rf dist/Mobile.xcframework
|
|
- mkdir -p dist
|
|
- gomobile bind -target ios,iossimulator -ldflags "-checklinkname=0" -o dist/Mobile.xcframework ./mobile
|
|
|
|
build:android:
|
|
desc: Build Android Archive (AAR) to dist/freeturn.aar
|
|
vars:
|
|
# ABI ровно те, что собирает приложение (splits в build.gradle.kts).
|
|
# androidapi 24 - minSdk приложения.
|
|
# -s -w срезают отладочную информацию: 23 МБ -> 13 МБ на оба ABI.
|
|
GOMOBILE_FLAGS: >-
|
|
-target android/arm64,android/arm
|
|
-androidapi 24
|
|
-javapkg com.freeturn.core
|
|
-ldflags "-checklinkname=0 -s -w -X github.com/samosvalishe/free-turn-proxy/mobile.version={{.VERSION}}"
|
|
cmds:
|
|
- rm -rf dist/freeturn.aar dist/freeturn-sources.jar
|
|
- mkdir -p dist
|
|
- cmd: gomobile bind {{.GOMOBILE_FLAGS}} -o dist/freeturn.aar ./mobile
|
|
platforms: [linux, darwin]
|
|
- cmd: |
|
|
powershell -NoProfile -Command '$env:JAVA_HOME = "C:\Program Files\Android\Android Studio\jbr"; $env:PATH = "$env:JAVA_HOME\bin;$env:PATH"; gomobile bind {{.GOMOBILE_FLAGS}} -o dist/freeturn.aar ./mobile'
|
|
platforms: [windows]
|
|
|
|
docker:awg:
|
|
desc: Build the AWG service image locally (docker/awg)
|
|
cmds:
|
|
- docker build -f docker/awg/Dockerfile -t freeturn-awg:dev .
|
|
|
|
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 ./...
|
|
|
|
captcha:page:
|
|
desc: Fetch a live VK captcha page (diff it against the parser fixture)
|
|
cmds:
|
|
- bash scripts/captcha_page.sh {{.CLI_ARGS | default "captcha_page.html"}}
|
|
|
|
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@{{.GOIMPORTS_VERSION}}
|
|
- 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]
|