e071084ebe
govulncheck / govulncheck (push) Waiting to run
Harness (E2E) / Harnesses (mock LLM) (push) Waiting to run
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Waiting to run
Lint / golangci-lint (push) Waiting to run
Run Tests / Unit Tests (push) Waiting to run
Run Tests / Etcd Integration Tests (push) Waiting to run
148 lines
6.3 KiB
Makefile
148 lines
6.3 KiB
Makefile
NAME = micro
|
|
GIT_COMMIT = $(shell git rev-parse --short HEAD)
|
|
GIT_TAG = $(shell git describe --abbrev=0 --tags --always --match "v*")
|
|
GIT_IMPORT = go-micro.dev/v5/cmd/micro
|
|
BUILD_DATE = $(shell date +%s)
|
|
LDFLAGS = -X $(GIT_IMPORT).BuildDate=$(BUILD_DATE) -X $(GIT_IMPORT).GitCommit=$(GIT_COMMIT) -X $(GIT_IMPORT).GitTag=$(GIT_TAG)
|
|
|
|
# GORELEASER_DOCKER_IMAGE = ghcr.io/goreleaser/goreleaser-cross:v1.25.7
|
|
GORELEASER_DOCKER_IMAGE = ghcr.io/goreleaser/goreleaser:latest
|
|
|
|
.PHONY: test test-race test-coverage harness zero-to-hero-transcript inner-loop cli-wayfinding docs-wayfinding install-smoke provider-conformance-mock provider-conformance lint fmt install-tools proto clean help gorelease-dry-run gorelease-dry-run-docker
|
|
|
|
# Default target
|
|
help:
|
|
@echo "Go Micro Development Tasks"
|
|
@echo ""
|
|
@echo " make test - Run tests"
|
|
@echo " make test-race - Run tests with race detector"
|
|
@echo " make test-coverage - Run tests with coverage"
|
|
@echo " make lint - Run linter"
|
|
@echo " make harness - Run deterministic getting-started and end-to-end harnesses"
|
|
@echo " make zero-to-hero-transcript - Verify the ordered 0→hero lifecycle transcript"
|
|
@echo " make inner-loop - Verify scaffold → run/chat/inspect → deploy dry-run contract"
|
|
@echo " make cli-wayfinding - Verify installed first-agent CLI wayfinding commands"
|
|
@echo " make docs-wayfinding - Verify first-agent docs/CLI wayfinding stays in sync"
|
|
@echo " make install-smoke - Verify the local install.sh and first-run CLI smoke path"
|
|
@echo " make provider-conformance-mock - Run cross-provider harness with deterministic mock provider"
|
|
@echo " make provider-conformance - Run harnesses against configured live providers"
|
|
@echo " make fmt - Format code"
|
|
@echo " make install-tools - Install development tools"
|
|
@echo " make proto - Generate protobuf code"
|
|
@echo " make clean - Clean build artifacts"
|
|
|
|
$(NAME):
|
|
CGO_ENABLED=0 go build -ldflags "-s -w ${LDFLAGS}" -o $(NAME) cmd/micro/main.go
|
|
|
|
# Run tests
|
|
test:
|
|
go test -v ./...
|
|
|
|
# Run tests with race detector
|
|
test-race:
|
|
go test -v -race ./...
|
|
|
|
# Run tests with coverage
|
|
test-coverage:
|
|
go test -v -race -coverprofile=coverage.out -covermode=atomic ./...
|
|
go tool cover -html=coverage.out -o coverage.html
|
|
@echo "Coverage report: coverage.html"
|
|
|
|
# Run the documented getting-started contracts plus the deterministic
|
|
# services → agents → workflows harnesses (mock LLM — no API key).
|
|
# This mirrors the default CI path so local dogfooding catches scaffold,
|
|
# run/chat/inspect, and 0→hero regressions before a PR is opened.
|
|
harness:
|
|
$(MAKE) cli-wayfinding
|
|
$(MAKE) inner-loop
|
|
$(MAKE) zero-to-hero-transcript
|
|
go run ./internal/harness/agent-flow
|
|
$(MAKE) provider-conformance-mock
|
|
|
|
# Verify the maintained 0→hero transcript in the same order documented for new
|
|
# developers: scaffold → run/chat/inspect → support-agent chat → flow history →
|
|
# deploy dry-run. This is the focused CI contract for the full lifecycle path.
|
|
zero-to-hero-transcript:
|
|
./internal/harness/zero-to-hero-ci/run.sh
|
|
|
|
# Focused provider-free CLI inner-loop contract: scaffold a service, keep the
|
|
# run/chat/inspect commands discoverable, and prove deploy dry-run reaches the
|
|
# documented boundary without remote side effects. Use this when README/docs/CLI
|
|
# drift is the concern and the full runtime harness is more than you need.
|
|
inner-loop:
|
|
go test ./cmd/micro/cli/new -run TestZeroToOne -count=1
|
|
go test ./cmd/micro -run 'TestFirstAgentWalkthroughCLIBoundaries|TestZeroToHeroCLIBoundaries|TestZeroToHeroCommandPrintsMaintainedNoSecretPath' -count=1
|
|
go test ./cmd/micro/cli/deploy -run TestDeployDryRun -count=1
|
|
go test ./internal/harness/zero-to-hero-ci -run 'TestZeroToHeroDeployDryRunCommandSmoke|TestNoSecretFirstAgentDebuggingSmoke|TestYourFirstAgentTutorialSmoke' -count=1
|
|
|
|
# Verify the installed CLI keeps the first-agent on-ramp commands discoverable.
|
|
# This guards the no-secret commands README/docs recommend (`micro agent demo`,
|
|
# `micro examples`, and `micro zero-to-hero`) as a CI contract.
|
|
cli-wayfinding:
|
|
go test ./cmd/micro -run 'TestFirstAgentWalkthroughCLIBoundaries|TestExamplesWayfindingIndexStaysLinked|TestExamplesCommandPointsAtWayfindingIndex|TestZeroToHeroCommandPrintsMaintainedNoSecretPath' -count=1
|
|
$(MAKE) docs-wayfinding
|
|
$(MAKE) install-smoke
|
|
|
|
# Verify the README and website first-agent/0→hero wayfinding links resolve to
|
|
# maintained local docs and examples. This is a focused no-network guard for the
|
|
# developer-adoption on-ramp.
|
|
docs-wayfinding:
|
|
go test ./internal/harness/zero-to-hero-ci -run 'TestFirstAgentWayfinding' -count=1
|
|
go test ./cmd/micro -run 'TestFirstAgentDocsMatchCLIOutput|TestFirstAgentWalkthroughCLIBoundaries' -count=1
|
|
|
|
# Verify the documented install script and first-run CLI command boundaries without
|
|
# provider keys or network access.
|
|
install-smoke:
|
|
./internal/harness/install-smoke/run.sh
|
|
|
|
# Run the shared provider conformance contract with the deterministic mock
|
|
# provider. This is the no-secret path used by CI and local dogfooding to keep
|
|
# provider-facing agent/tool semantics covered on every machine.
|
|
provider-conformance-mock:
|
|
go run ./internal/harness/provider-conformance -providers mock
|
|
|
|
# Run the same harnesses against every configured live provider. Providers
|
|
# without API keys are skipped; configured providers must pass.
|
|
provider-conformance:
|
|
go run ./internal/harness/provider-conformance
|
|
|
|
# Run linter
|
|
lint:
|
|
golangci-lint run
|
|
|
|
# Format code
|
|
fmt:
|
|
gofmt -s -w .
|
|
goimports -w .
|
|
|
|
# Install development tools
|
|
install-tools:
|
|
@echo "Installing development tools..."
|
|
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
|
go install golang.org/x/tools/cmd/goimports@latest
|
|
go install github.com/kyoh86/richgo@latest
|
|
go install go-micro.dev/v5/cmd/protoc-gen-micro@latest
|
|
@echo "Tools installed successfully"
|
|
|
|
# Generate protobuf code
|
|
proto:
|
|
@echo "Generating protobuf code..."
|
|
find . -name "*.proto" -not -path "./vendor/*" -exec protoc --proto_path=. --micro_out=. --go_out=. {} \;
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
rm -f coverage.out coverage.html
|
|
find . -name "*.test" -type f -delete
|
|
go clean -cache -testcache
|
|
|
|
# Try binary release
|
|
gorelease-dry-run:
|
|
docker run \
|
|
--rm \
|
|
-e CGO_ENABLED=0 \
|
|
-v $(CURDIR):/$(NAME) \
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
-w /$(NAME) \
|
|
$(GORELEASER_DOCKER_IMAGE) \
|
|
--clean --verbose --skip=publish,validate --snapshot
|