name: ci # Гейт качества на PR и push в main: vet, тесты с race-детектором, линт, # gofmt и карантин зависимостей тулкита. on: pull_request: push: branches: [main] jobs: test: runs-on: backend container: golang:1.27 steps: - uses: actions/checkout@v4 - name: vet run: go vet ./... - name: test (race) run: go test -race ./... -count=1 lint: runs-on: backend container: golang:1.27 steps: - uses: actions/checkout@v4 - name: install golangci-lint run: go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.13.2 - name: lint run: $(go env GOPATH)/bin/golangci-lint run ./... - name: gofmt run: | unformatted=$(gofmt -l .) [ -z "$unformatted" ] || { echo "gofmt: требуется форматирование: $unformatted"; exit 1; } - name: toolkit dependency quarantine run: | direct=$(go list -m -f '{{if not .Main}}{{if not .Indirect}}{{.Path}}{{end}}{{end}}' all) allowed='^(github.com/modelcontextprotocol/go-sdk|gopkg.in/yaml.v3|github.com/BurntSushi/toml)$' bad=$(echo "$direct" | grep -vE "$allowed" | grep -v '^$') if [ -n "$bad" ]; then echo "недопустимые прямые зависимости:"; echo "$bad"; exit 1 fi