fix version 1

This commit is contained in:
2026-09-22 21:15:34 +08:00
parent 9f86366638
commit d63d7e8b3a
277 changed files with 9959 additions and 1514 deletions

View File

@@ -18,17 +18,17 @@ require (
bsm/full/module/social/feed v0.0.0
bsm/full/module/social/group v0.0.0
bsm/full/module/social/relation v0.0.0
google.golang.org/protobuf v1.36.11
google.golang.org/protobuf v1.36.12
)
require (
github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0 // indirect
golang.org/x/net v0.57.0 // indirect
golang.org/x/sys v0.47.0 // indirect
golang.org/x/text v0.40.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260807164820-c8921c73eeea // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260807164820-c8921c73eeea // indirect
google.golang.org/grpc v1.83.0 // indirect
golang.org/x/net v0.59.0 // indirect
golang.org/x/sys v0.48.0 // indirect
golang.org/x/text v0.42.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260921155816-b14227669459 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260921155816-b14227669459 // indirect
google.golang.org/grpc v1.84.0 // indirect
)
replace (

View File

@@ -1,42 +1,22 @@
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8=
github.com/go-logr/logr v1.4.4/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0 h1:/Tnpcb2E0Pz/tN9s3bfEY2Q8ePCEX9iuS+cneUwncnw=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0/go.mod h1:zOBXOsUaBSjKgmH4OGzV1esUpR3oUSCPYVd2cUBjKYY=
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
go.opentelemetry.io/otel v1.45.0 h1:pdrWmLHofpubmArBv1LgFSv1Z0Ie/ppdZzu+kUN5EeU=
go.opentelemetry.io/otel v1.45.0/go.mod h1:XZxIqPapzEYnhNSScF5DIqXhm/rYi0FzCe2XddAwZfQ=
go.opentelemetry.io/otel/metric v1.45.0 h1:7Eg1uH7CJ5cXv9is6tnBe1FI6rj1nwUdbFypRm3br/M=
go.opentelemetry.io/otel/metric v1.45.0/go.mod h1:HAPbm1nd3p1PmFH7v2dR+6BjXxw+Lq4a2+pndMAm08s=
go.opentelemetry.io/otel/sdk v1.45.0 h1:4VVSMgQ83dUgW2aoX5f6JgLvHwIvzcuLnF9lUdCSpCw=
go.opentelemetry.io/otel/sdk v1.45.0/go.mod h1:Sr40LgXV7DsKMMJMKOhUWOgMWTfAaqvm2kF0g7ilwuA=
go.opentelemetry.io/otel/sdk/metric v1.44.0 h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRks6si09iEfI=
go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA=
go.opentelemetry.io/otel/trace v1.45.0 h1:l/mP6Uv7oNO7/TblbhpbgMidxhq1uO/rPsikOyVhxag=
go.opentelemetry.io/otel/trace v1.45.0/go.mod h1:qoJJA2xNMnxRrdISU/kLtfUH2wNeQbiv+jhs/CxI8bc=
golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE=
golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU=
golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs=
golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY=
golang.org/x/net v0.59.0 h1:5zfYln+w5XCxwrnMMJPufRgNoXEaGxl0wo5GqPXyues=
golang.org/x/net v0.59.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg=
golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo=
golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI=
golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E=
gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
google.golang.org/genproto/googleapis/api v0.0.0-20260807164820-c8921c73eeea h1:Jifw/kjs/r3B0uszvls/m3c3tmZs2YHGM9C+rvxP9gY=
google.golang.org/genproto/googleapis/api v0.0.0-20260807164820-c8921c73eeea/go.mod h1:K/+WGbmBY7aNW1HDw1fJnKYo10i0DkAX6pows00dLig=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260807164820-c8921c73eeea h1:kVhQEPTpKQahD5+JSBTfBB19wcgQTTjAIn45MBqnyHk=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260807164820-c8921c73eeea/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
google.golang.org/grpc v1.83.0 h1:JeNZEKJFbQxArAMl+hiytHauacDNqJUllNfmIMmpqnQ=
google.golang.org/grpc v1.83.0/go.mod h1:kDyl6SKsiHKt0uylY5gtn5cEjkrIOhQOGDgIc4JGwzQ=
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
google.golang.org/genproto/googleapis/api v0.0.0-20260921155816-b14227669459 h1:GS9OIt/j7c8bvBjYNgnKQysVfmV7e4jM0H8ZK95G4t8=
google.golang.org/genproto/googleapis/api v0.0.0-20260921155816-b14227669459/go.mod h1:PX5/4vemwVoXtwEcRDWwcR1/r0qrosfx3qoVADMwnVE=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260921155816-b14227669459 h1:b0xCahf3FK2m2Cv0p4vTozGPWncCvLfwV86UNg8xWU8=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260921155816-b14227669459/go.mod h1:OaIUM3+LpYcK2GXM4FTmhWoIq371Owdr+Cc7/BsYHHc=
google.golang.org/grpc v1.84.0 h1:soMyaPJ8pAak5PIQ0DGBUir0XRo2fRoMqhNWMLlLxO0=
google.golang.org/grpc v1.84.0/go.mod h1:ljCht0DrxQrXBDRTZp52Qxh3Ffk8CdYm2sj4O2QN2C0=
google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc=
google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=

View File

@@ -5,6 +5,8 @@ set -Eeuo pipefail
readonly SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
readonly WORKSPACE_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)"
readonly MODULE_ROOT="${WORKSPACE_ROOT}/module"
# 聚合宿主(全量 / 电商)同样需要构建与生产配置,两者都不在 module/ 下。
readonly PKGS_ROOT="${WORKSPACE_ROOT}/pkgs"
readonly BUILD_ROOT="${WORKSPACE_ROOT}/.builds"
readonly ENTRY_ROOT="${BUILD_ROOT}/.entries"
readonly CONFIG_ROOT="${BUILD_ROOT}/etc"
@@ -25,12 +27,15 @@ export GOARCH=amd64
export CGO_ENABLED=0
modules=()
while IFS= read -r -d '' go_mod; do
modules+=("$(dirname -- "${go_mod}")")
done < <(find "${MODULE_ROOT}" -type f -name go.mod -print0 | sort -z)
for source_root in "${MODULE_ROOT}" "${PKGS_ROOT}"; do
[[ -d "${source_root}" ]] || continue
while IFS= read -r -d '' go_mod; do
modules+=("$(dirname -- "${go_mod}")")
done < <(find "${source_root}" -type f -name go.mod -print0 | sort -z)
done
if (( ${#modules[@]} == 0 )); then
echo "error: no service modules were found under ${MODULE_ROOT}" >&2
echo "error: no service modules were found under ${MODULE_ROOT} or ${PKGS_ROOT}" >&2
exit 1
fi
@@ -45,7 +50,10 @@ trap cleanup EXIT
echo "Building ${#modules[@]} service modules..."
for module_dir in "${modules[@]}"; do
relative_path="${module_dir#"${MODULE_ROOT}/"}"
# 去掉工作区一级目录module/ 或 pkgs/产物名保持原样base-ads、all、ecmall。
relative_path="${module_dir#"${WORKSPACE_ROOT}/"}"
relative_path="${relative_path#module/}"
relative_path="${relative_path#pkgs/}"
artifact_name="${relative_path//\//-}"
output="${BUILD_ROOT}/${artifact_name}"
@@ -93,6 +101,18 @@ mkdir -p "${CONFIG_ROOT}"
config_count=0
for module_dir in "${modules[@]}"; do
if [[ "${module_dir}" == "${PKGS_ROOT}/"* ]]; then
# 聚合入口按 --workspace 选配置,默认工作区为 default生产配置文件名固定为 default_prod.yaml。
# 两个入口同名,按入口名分目录存放,避免相互覆盖。
entry_name="$(basename -- "${module_dir}")"
config_file="${module_dir}/etc/default_prod.yaml"
[[ -f "${config_file}" ]] || continue
mkdir -p "${CONFIG_ROOT}/${entry_name}"
cp -- "${config_file}" "${CONFIG_ROOT}/${entry_name}/default_prod.yaml"
((config_count += 1))
continue
fi
module_name="$(basename -- "${module_dir}")"
config_name="${module_name}_prod.yaml"
config_file="${module_dir}/etc/${config_name}"

37
scripts/install-tools.sh Normal file
View File

@@ -0,0 +1,37 @@
#!/usr/bin/env bash
set -euo pipefail
# 工具列表(从 go.mod 的 tool 指令中提取)
TOOLS=(
"git.apinb.com/bsm-tools/protoc-gen-markdown"
"git.apinb.com/bsm-tools/protoc-gen-slc"
"git.apinb.com/bsm-tools/protoc-gen-ts"
"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway"
"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
"github.com/pepabo/protoc-gen-go-client"
"google.golang.org/grpc/cmd/protoc-gen-go-grpc"
"google.golang.org/protobuf/cmd/protoc-gen-go"
)
echo "==> 开始安装 protoc 插件..."
for tool in "${TOOLS[@]}"; do
echo "--> 安装 $tool"
go install "$tool@latest"
done
echo "==> 全部安装完成。"
# 检查 GOBIN / GOPATH 是否在 PATH 中
BIN_DIR="$(go env GOBIN)"
if [ -z "$BIN_DIR" ]; then
BIN_DIR="$(go env GOPATH)/bin"
fi
echo
echo "工具安装目录: $BIN_DIR"
case ":$PATH:" in
*":$BIN_DIR:"*) echo "该目录已在 PATH 中,可直接使用。" ;;
*) echo "提示:请将 $BIN_DIR 添加到 PATH 环境变量中,例如:"
echo " export PATH=\"\$PATH:$BIN_DIR\"" ;;
esac

View File

@@ -1,4 +1,4 @@
[CmdletBinding()]
[CmdletBinding()]
param(
[switch]$SkipVet
)
@@ -7,12 +7,21 @@ $ErrorActionPreference = "Stop"
$workspaceRoot = Split-Path -Parent $PSScriptRoot
Push-Location $workspaceRoot
try {
$unformatted = @(gofmt -l pkgs module)
# 本地开发前提go.work 把共享 SDK 替换为工作区外的相对路径,缺少该目录时整个工作区都无法解析。
$sdkDir = [System.IO.Path]::GetFullPath((Join-Path $workspaceRoot "..\..\bsm-sdk\core"))
if (-not (Test-Path -Path $sdkDir -PathType Container)) {
throw "未找到共享 SDK 目录: $sdkDir`n本地开发前提不满足:请先将 bsm-sdk/core 检出到工作区上一级目录的同级路径,即 $sdkDir"
}
$unformatted = @(gofmt -l pkgs module scripts)
if ($unformatted.Count -gt 0) {
throw ("gofmt required:" + [Environment]::NewLine + ($unformatted -join [Environment]::NewLine))
}
$modules = @(go list -m -f '{{.Dir}}')
if ($LASTEXITCODE -ne 0 -or $modules.Count -eq 0) {
throw "未解析到任何工作区模块go list -m 可能失败或返回空列表"
}
foreach ($module in $modules) {
Write-Host "==> $module"
Push-Location $module

View File

@@ -7,13 +7,26 @@ readonly WORKSPACE_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)"
cd -- "${WORKSPACE_ROOT}"
unformatted="$(gofmt -l pkgs module)"
# 本地开发前提go.work 把共享 SDK 替换为工作区外的相对路径,缺少该目录时整个工作区都无法解析。
readonly SDK_DIR="${WORKSPACE_ROOT}/../../bsm-sdk/core"
if [[ ! -d "${SDK_DIR}" ]]; then
echo "error: 未找到共享 SDK 目录: ${SDK_DIR}" >&2
echo "error: 本地开发前提不满足:请先将 bsm-sdk/core 检出到工作区上一级目录的同级路径,即 ${SDK_DIR}" >&2
exit 1
fi
unformatted="$(gofmt -l pkgs module scripts)"
if [[ -n "${unformatted}" ]]; then
printf 'error: gofmt required:\n%s\n' "${unformatted}" >&2
exit 1
fi
mapfile -t modules < <(go list -m -f '{{.Dir}}')
if (( ${#modules[@]} == 0 )); then
echo "error: 未解析到任何工作区模块go list -m 可能失败或返回空列表" >&2
exit 1
fi
for module_dir in "${modules[@]}"; do
echo "==> ${module_dir}"
(