Files

134 lines
4.2 KiB
Makefile
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.PHONY: help
help:
@echo "Available commands:"
@echo " make build - Build release version"
@echo " Optional: VERSION, PLATFORM, ARCH, NO_TELEMETRY=1"
@echo " make dev - Build development version (with debug info)"
@echo " Optional: VERSION, PLATFORM, ARCH, NO_TELEMETRY=1"
@echo " make dev-incremental - Incremental dev build (only rebuild if sources changed)"
@echo " make test - Run unit tests"
@echo " make test-e2e - Run E2E tests with Playwright"
@echo " make test-e2e-ui - Run E2E tests with Playwright UI mode"
@echo " make show-report - Open Playwright test report in browser"
@echo " make serve-report - Start report server (fetches source from GitHub)"
@echo " make install-e2e - Install E2E test dependencies"
@echo " make build-web - Build frontend"
@echo " make generate - Run go generate"
@echo " make clean - Clean build artifacts"
@echo " make lint - Run linter"
@echo " make release - Build release for all platforms"
build: bililive
.PHONY: build
bililive:
@go run build.go release $(if $(VERSION),--version $(VERSION),) $(if $(PLATFORM),--platform $(PLATFORM),) $(if $(ARCH),--arch $(ARCH),) $(if $(NO_TELEMETRY),--no-telemetry,)
# 开发版构建(支持可选参数)
# 用法:
# make dev - 普通开发构建
# make dev VERSION=v0.8.0-rc.1 - 指定版本号
# make dev PLATFORM=linux ARCH=amd64 - 交叉编译
# make dev PLATFORM=linux ARCH=amd64 VERSION=v0.8.0-rc.2.1 - 交叉编译 + 指定版本号
# make dev NO_TELEMETRY=1 - 禁用启动统计上报
.PHONY: dev
dev:
@go run build.go dev $(if $(VERSION),--version $(VERSION),) $(if $(PLATFORM),--platform $(PLATFORM),) $(if $(ARCH),--arch $(ARCH),) $(if $(NO_TELEMETRY),--no-telemetry,)
# 收集所有 Go 源文件作为依赖(使用通配符,兼容 Windows)
GO_SOURCES := $(wildcard src/**/*.go src/**/**/*.go src/**/**/**/*.go)
GO_MOD_FILES := go.mod go.sum
# 开发版二进制输出路径(跨平台统一名称)
ifeq ($(OS),Windows_NT)
DEV_BINARY := bin/bililive-dev.exe
else
DEV_BINARY := bin/bililive-dev
endif
# 增量编译:只在源码变化时重新编译
# Make 会比较目标文件和依赖文件的修改时间,只在需要时执行编译
$(DEV_BINARY): $(GO_SOURCES) $(GO_MOD_FILES)
@go run build.go dev-incremental
# dev-incremental 目标:便于记忆的别名
.PHONY: dev-incremental
dev-incremental: $(DEV_BINARY)
.PHONY: release
release: build-web generate
@./src/hack/release.sh
.PHONY: release-no-web
release-no-web: generate
@./src/hack/release.sh
.PHONY: release-docker
release-docker:
@./src/hack/release-docker.sh
.PHONY: test
test:
@go run build.go test
.PHONY: clean
clean:
@go run build.go clean
.PHONY: generate
generate:
go run build.go generate
.PHONY: build-web
build-web:
go run build.go build-web
# run 目标已移除(foreman 是平台特定的)
# 请直接使用 make dev 后运行生成的二进制文件
.PHONY: lint
lint:
golangci-lint run --path-mode=abs --build-tags=dev
# 同步 AGENTS.md 到其他 AI 指示文件
.PHONY: sync-agents
sync-agents:
@go run build.go sync-agents
# 检查 AI 指示文件是否一致(用于 CI)
.PHONY: check-agents
check-agents:
@go run build.go check-agents
# E2E 测试(使用 Playwright)
.PHONY: test-e2e
test-e2e:
npx playwright test
# 安装 E2E 测试依赖
.PHONY: install-e2e
install-e2e:
yarn install --frozen-lockfile
npx playwright install --with-deps chromium
# 运行 E2E 测试(带 UI)
.PHONY: test-e2e-ui
test-e2e-ui:
npx playwright test --ui
# 查看 E2E 测试报告(带源码支持,需要本地源码)
.PHONY: show-report
show-report:
npx playwright show-report playwright-report
# 启动报告服务器(可从 GitHub 获取源码,适合查看 CI 报告)
# 用法:
# make serve-report # 本地模式
# make serve-report COMMIT=abc123 # 从 GitHub 获取源码
.PHONY: serve-report
serve-report:
@node scripts/report-server.js $(if $(COMMIT),--commit $(COMMIT),)