134 lines
4.2 KiB
Makefile
134 lines
4.2 KiB
Makefile
|
||
.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),)
|