v0.2.0
新增(工程化)
- 发布流程与供应链扫描(同步自主项目):新增
release.yml(tagv*触发 →
SemVer 与 CHANGELOG 门禁 → Go/前端/契约三条门禁 → 8 个镜像推 ghcr.io →
建 GitHub Release;镜像双 tagvX.Y.Z+sha-<7位>,latest仅非预发布时更新,
服务清单由docker compose config --format json现算而非硬编码)、
security-scan.yml(govulncheck 按模块跑,第三方符号级可达才阻断、stdlib 与
非符号级只告警;trivy 只对 HIGH/CRITICAL 且上游已有修复版本阻断)、
dependabot.yml(gomod / npm / github-actions / docker,weekly)。
trivy 刻意不用aquasecurity/trivy-action——2026-03 该 action 的 76 个 tag 曾被
强推为窃取 runner secret 的恶意版本,改跑固定版本官方镜像。 - 镜像名版本化:compose 里每个可构建服务显式声明
${IMAGE_PREFIX:-go-admin-kit}-<服务名>:${IMAGE_TAG:-latest},两变量都不设时
与旧推导名完全一致(本机开发 / CI bake / ops 脚本零改动)。 - CI 补
shared-module与bpm-service两个门禁:shared是 8 个服务共用的
公共库(metrics/logger/response/jobbeat/mask/iploc),改坏了全线崩却一直没有门禁。 - CI 的 Go 版本抽成顶层
env.GO_VERSION,升版本只改一处;setup-buildx-action
与upload-artifact同步升到当前主版本(后者 v4 已是 Node 20 弃用线)。
安全
- Go 工具链升 1.26.5(同步自主项目):
go.work与 9 个模块加toolchain go1.26.5。
刻意不抬高go语言版本指令——那是使用者的最低要求,抬高会强迫下游全部升级,
而消除 stdlib 漏洞只需用新工具链编译。实测 govulncheck 在services/shared上
由 3 条 stdlib 符号级可达降为 0 条(crypto/tls需 1.26.5,1.26.4 不够)。 - bpm 生产配置强校验:
APP_ENV=production下JWT_SECRET(<32 位或占位符)与
DB_PASSWORD(空/弱值)拒绝启动;其余内部 token 不阻断启动,改为在使用点
fail closed 并打 WARNING——BPM_INTERNAL_TOKEN缺失或为占位符时/internal
端点一律 503,绝不拿公开的开发占位符当真凭据校验。占位符判定用dev-前缀兜底。 - 清掉 compose 中 alertmanager 的
NOTIFY_INTERNAL_TOKEN开发占位符默认值,
让"没配"就是没配,不再静默注入一个人尽皆知的 token。
修复
- 认证与监控契约:加固刷新协调并完善 OpenAPI 生成链路(即
v0.2.0-rc.2的候选期修复)。
文档
- 文档站新增「更新日志」页(中英各一个导航入口),经
@include直读仓库根
CHANGELOG.md——与release.yml抽取的 Release notes 同一来源,发版后
GitHub Release、文档站、仓库三处日志天然一致,无需维护第二份。 CONTRIBUTING.md技术栈订正 Go + Vue → React;启动流程改为make compose-up
(数据栈在独立 infra compose,只起应用栈会失败);移除仓库内不存在的monolith/引用。SECURITY.md:MYSQL_ROOT_PASSWORD→DB_PASSWORD、MySQL → PostgreSQL;
新增「已知边界」显式声明未实现 CSRF 防护(纯 Bearer + SPA,改用 cookie 承载
token 需自行补齐);补生产自校验的分服务准确口径。- 新增
CODE_OF_CONDUCT.md(Contributor Covenant v2.1 中文版)。 - README 中英两版:服务数订正为 7 个 Go 服务进程,补行为准则与收录范围链接。
0.2.0 正式版相对 0.1.0 的完整范围 = 本段落 + 下方 [0.2.0-rc.1] 段落。
镜像
本次共 8 个镜像,每个都带 v0.2.0 与 sha-41a7654 两个 tag(正式版另更新 latest):
ghcr.io/superiorchuo/gopherforge/go-admin-kit-audit-service:v0.2.0ghcr.io/superiorchuo/gopherforge/go-admin-kit-auth-service:v0.2.0ghcr.io/superiorchuo/gopherforge/go-admin-kit-bpm-service:v0.2.0ghcr.io/superiorchuo/gopherforge/go-admin-kit-file-service:v0.2.0ghcr.io/superiorchuo/gopherforge/go-admin-kit-frontend:v0.2.0ghcr.io/superiorchuo/gopherforge/go-admin-kit-identity-service:v0.2.0ghcr.io/superiorchuo/gopherforge/go-admin-kit-monitor-service:v0.2.0ghcr.io/superiorchuo/gopherforge/go-admin-kit-system-service:v0.2.0
部署(compose)
cd microservices
# 写进 microservices/.env,或直接前置到命令上
export IMAGE_PREFIX=ghcr.io/superiorchuo/gopherforge/go-admin-kit
export IMAGE_TAG=v0.2.0
# 有状态服务在独立 infra 栈,先起它(数据不随应用栈重建)
docker compose -p go-admin-kit-infra -f docker-compose.infra.yml up -d
# 应用栈:拉版本化镜像后直接起,不本地构建
docker compose -f docker-compose.yml pull
docker compose -f docker-compose.yml up -d --no-build不设 IMAGE_PREFIX / IMAGE_TAG 时,compose 仍解析为本地构建的
go-admin-kit-<服务名>:latest,行为与发版前一致。