Files
wangairnan ad4a87fc9f
Release / release (push) Failing after 8s
feat(ci): 基于 v* 标签的多架构自动发版
- 新增 .gitea/workflows/release.yml:推送 v* 标签触发,构建前端嵌入后
  交叉编译 linux/darwin(amd64+arm64),生成变更日志并创建 Gitea Release
- 新增 scripts/build-release.sh:make dist 与 CI 共用的产物构建脚本,
  tar.gz 打包 + SHA256SUMS;不含 windows(internal/store 依赖 Unix Umask)
- Makefile 增加 dist 目标;版本注入沿用 git describe + ldflags(pn version)
2026-09-09 22:46:12 +08:00

63 lines
2.1 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.
# Pure Note 构建与运维入口
#
# 常用目标:
# make web 构建前端(npm ci + vite build → web/dist)
# make sync-assets 拷贝 web/dist → internal/webui/dist(go:embed 约束,§8.3-1)
# make build 全量构建(前端 + 单二进制 pn)
# make linux 交叉编译 linux/amd64
# make dist 全平台发布产物 → dist/(VERSION ?= git describe,与 CI 发版共用脚本)
# make test Go 测试 + 前端测试
# make smoke 真实构建冒烟测试(§8.3-6)
# make dev 双进程热重载(air + vite dev)
# make vulncheck govulncheck
#
# 发版:git tag -a v0.0.1 -m "v0.0.1" && git push origin v0.0.1
# (推送 v* 标签触发 .gitea/workflows/release.yml 自动构建并创建 Release)
VERSION ?= $(shell git describe --tags --always 2>/dev/null || echo dev)
COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo none)
DATE ?= $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
LDFLAGS := -s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.buildDate=$(DATE)
.PHONY: web sync-assets build linux dist test smoke dev vulncheck clean
web:
cd web && npm ci && npm run build
# go:embed 只能引用本包目录树内文件:产物必须拷进 internal/webui/dist
sync-assets:
rm -rf internal/webui/dist
cp -r web/dist internal/webui/dist
touch internal/webui/dist/.gitkeep
build: web sync-assets
CGO_ENABLED=0 go build -trimpath -ldflags="$(LDFLAGS)" -o pn ./cmd/pn
linux: web sync-assets
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags="$(LDFLAGS)" \
-o pn-linux-amd64 ./cmd/pn
# 全平台发布产物(版本注入逻辑与 CI 发版共用 scripts/build-release.sh)
dist: web sync-assets
scripts/build-release.sh "$(VERSION)"
test:
go vet ./...
go test ./...
cd web && npm test
# 构建冒烟(§8.3-6):真实构建 → 起服务 → 断言公开页与 script/link 资源 200 + 正确 MIME
smoke: build
./scripts/smoke.sh
dev:
air &
cd web && npm run dev
vulncheck:
govulncheck ./...
clean:
rm -f pn pn-linux-amd64
rm -rf dist