[0.3.8] - 2025-01-15
Added
降低编译后二进制大小
go build -ldflags="-s -w"
为降低生成的二进制大小,默认移除调试符号表和调试信息。
基于 cloudevents 添加审计事件
启用功能后在,客户端请求接口,服务端自动推送相应请求、响应事件以便审计。
{
"service_name": "netdev.v1.oneops.api.grpc-kit.com",
"level": "request_response",
"audit_id": "ee03fc569f7ebf8c88ef026457db5425",
"stage": "response_complete",
"grpc_method": "ListSwitchAdminUsers",
"grpc_service": "default.api.oneops.netdev.v1.OneopsNetdev",
"user": {
"uid": "user1",
"username": "user1",
"groups": [
"kpy-seat"
],
"extra": {}
},
"source_ips": [
"127.0.0.1"
],
"user_agent": "PostmanRuntime/7.43.0",
"response_status": {
"status": "success",
"reason": "OK",
"code": 200
},
"request_object": "{}",
"response_object": "{}",
"request_received_timestamp": "2024-12-24T15:33:47.814063+08:00",
"stage_timestamp": "2024-12-24T15:33:47.844292+08:00"
}
支持缓存服务配置
# 缓存服务配置
cachebox:
enable: true
driver: memory # memory, redis
memory:
max_entry: 60
#redis:
#endpoints:
添加 docs 目录
放置项目相关文档与说明。
ent 添加 mixin 示例固定字段
func (Demo) Mixin() []ent.Mixin {
return []ent.Mixin{
mixin.Time{},
}
}
这样初始化数据库表时,自动会添加 "create_time" 与 "update_time" 字段。
添加工作流的支持
配置
# 流程编排配置
automations:
enable: true
# kubernetes-1.26.11/staging/src/k8s.io/client-go/tools/clientcmd/client_config.go
kubernetes:
# 未配置则为 inClusterConfig 使用集群内 sa 授权
config_path: /Users/mingqing/.kube/config
#rest_config:
# host: fake.dev.kpy.cloud:6443
# bearer_token: xxx
# tls_client_config:
# insecure: true
handler/private.go
if m.baseCfg.Automations.Enable {
fcc, err := m.baseCfg.GetFlowClientConfig()
if err != nil {
return idpOpts, err
}
idpOpts = append(idpOpts, modeler.WithWorkflow(m.logger, fcc))
}
改造
modeler/flow/
添加常见 git lfs 文件
.gitattributes
*.tar.gz filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
Fixed
使用 podman 构建镜像错误
在 Makefile 中使用错误,
Cannot connect to Podman. Please verify your connection to the Linux system using podman system connection list, or try podman machine init and podman machine start to manage a new Linux VM
Error: unable to connect to Podman socket: Get "http://d/v4.4.0/libpod/_ping": dial unix ///var/folders/m5/4s1cpkvd3xsbt7lr9ncwl1xw0000gn/T/podman-run--1/podman/podman.sock: connect: no such file or directory
但直接在 shell 中使用 podman 又是正常的。
因为在系统中使用了 alias docker="podman"
设置别名,可能引起变量无法集成,改进 scripts/docker.sh
脚本,支持自动判断 docker
或 podman
容器运行时。
ent 交叉编译问题
>> precheck environment
>> generation release version
>> generation code from proto files
>> generation database schema
fork/exec /var/folders/m5/4s1cpkvd3xsbt7lr9ncwl1xw0000gn/T/go-build462434904/b001/exe/entc: exec format error
modeler/ent/generate.go:3: running "go": exit status 1
make: *** [generate] Error 1
因为 "go:generate" 也是继承 "GOOS"、"GOARCH" 变量,如果跟当前主机不匹配,则后续的 "go run" 是无法运行的。
通过变量 "GOOS=${GOHOSTOS} GOARCH=${GOHOSTARCH} go generate ./modeler/ent/" 解决。