CHANGELOG 0.3
3 分钟阅读
Changelog
名称 | 说明 |
---|---|
Added | 添加新功能 |
Changed | 功能的变更 |
Deprecated | 未来会删除 |
Removed | 之前为Deprecated状态,此版本被移除 |
Fixed | 功能的修复 |
Security | 有关安全问题的修复 |
[Unreleased]
[0.3.2] - 2023-05-28
Added
更改 gitlab runner 为有向无环图 (DAG) 流水线
- 每个 job 均使用独立的容器来运行,避免无意义拆分多个 job;
- 在根目录默认生成 Dockerfile 文件;
- 确定默认镜像相关使用的变量名;
为方便 nginx 配置路由转发,更改 swagger 使用相对地址
-
由原先 “/openapi-spec/microservice.swagger.json” 更改为 “./microservice.swagger.json”
<body> <redoc spec-url='./microservice.swagger.json'></redoc> <script src="./redoc.standalone.js"> </script> </body>
-
在 nginx 中 location 配置
location /opsaid/test1/v1/openapi-spec/ { proxy_pass http://opsaid-test1:10080/openapi-spec/; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-Port $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
-
实现对接口文档的转发
修复 gitlab 的 check-protoc 阶段检测文件错误
protoc-gen-go-grpc
gitlab runner 更改为 有向无环图 (DAG) 流水线
- 每个 job 均使用独立的 容器 来运行,适合用来运行独立的任务,加快速度,避免无意义拆分多个 job;
- 让 Dockerfile 默认生成;
- 确定默认镜像使用的变量名;
```shell
CI_REGISTRY
CI_REGISTRY_IMAGE
CI_REGISTRY_USER
CI_REGISTRY_PASSWORD
```
进入:https://{gitlab}/-/settings/ci_cd,设置好变量。
新增 jenkins 流水线模版配置
.jenkins/workflows/Jenkinsfile
依赖 k8s 环境,需提前配置好,参考 Jenkins Pipeline。
统一规范 CICD 变量名
- 新增
scripts/variable.sh
用于动态变量生成; - 区别
scripts/env
用于全局静态变量; - 支持静态配置编译运行时的变量,文件路径
scripts/env-${DEPLOY_ENV}-${BUILD_ENV}
;
更改本微服务的 proto 为相对路径
github.com/opsaid/test1/api/opsaid/test1/v1/microservice.proto
更改为
api/opsaid/test1/v1/microservice.proto
为解决服务在容器内构建时,如果为绝对路径,则代码目录必须存放至 $GOPATH/src/$REPOSITORY 路径下,否则无法运行。
protoc \
-I ./ \
-I /usr/local/include/ \
-I "${GOPATH}"/src \
-I "${GOPATH}"/src/github.com/grpc-ecosystem/grpc-gateway/ \
-I "${GOPATH}"/src/github.com/googleapis/googleapis/ \
--go_opt paths=source_relative \
--go_out ./ \
--go-grpc_opt paths=source_relative \
--go-grpc_opt require_unimplemented_servers=false \
--go-grpc_out ./ \
./api/opsaid/test5/${API_VERSION}/*.proto
添加 paths=source_relative 这个的意思是在当前目录生成 *.pb.go 文件,而忽略 proto 文件中的 go_package 路径。
统一 Makefile 与 scripts 中镜像相关的变量
-
对
make manifests
自动生成部署清单:- 文件:Dockerfile
- 目录:deploy/*
-
移除
Makefile
中以下变量转移至
scripts/env
中做设定,因不直接在 Makefile 文件中使用,简化结构。# 构建Docker容器变量 BUILD_GOOS ?= $(shell ${GO} env GOOS) IMAGE_FROM ?= scratch IMAGE_HOST ?= hub.docker.com IMAGE_NAME ?= ${IMAGE_HOST}/${NAMESPACE}/${SHORTNAME} IMAGE_VERSION ?= ${RELEASE_VERSION} # 部署与运行相关变量 BUILD_ENV ?= local DEPLOY_ENV ?= dev
-
更改 NAMESPACE 为部署使用的空间
区别于
PRODUCT_CODE
表示产品代码或项目代码,而NAMESPACE
表示租户空间,部署含义。 -
改进
scripts/manifests.sh
后的变量- 移除 Makefile 中的
NAMESPACE
变量;
BIZ_GROUP_APPID=hello DEPLOY_ENV=dev DEPLOY_ENV=local
部署的环境变量,值:dev test prod stress demo staging
- 移除 Makefile 中的
-
生成模版时支持自定义路径
make manifests TEMPLATES=kubernetes TEMPLATE_PATH=../gitops/deploy/kubernetes/dev/
添加以下内容:
- scripts/kaniko.sh
- 移除 scripts/env 镜像变量
- 支持设置全局变量以 env-$DEPLOY_ENV-$BUILD_ENV 文件为准;
Fixed
go embed 存在 .svn 异常
-
问题
+ make lint >> precheck environment >> generation release version >> generation code from proto files public/doc/embed.go:9:12: pattern openapi-spec/*: cannot embed directory openapi-spec/.svn: invalid name .svn public/doc/embed.go:9:12: pattern openapi-spec/*: cannot embed directory openapi-spec/.svn: invalid name .svn make: *** [Makefile:74: lint] Error 1
-
解决
需更改为更明确的文件路径,避免使用 “*”
// Code generated by "grpc-kit-cli/0.3.1-beta.1". DO NOT EDIT. package doc import ( "embed" ) //go:embed openapi-spec/*.js //go:embed openapi-spec/*.json //go:embed openapi-spec/*.html var Assets embed.FS
[0.3.1] - 2023-04-09
Added
-
使用文档更新
- 去除 gogo 模块文档;
- 更新 grpc 地址由 https://github.com/golang/protobuf 转变为 https://github.com/protocolbuffers/protobuf-go;
-
多平台镜像构建
- 由于阿里云镜像中心不支持存放多架构容器更改为使用腾讯容器镜像服务;
- 当前多架构容器仅支持使用 “docker buildx”,暂不支持 “podman”;
-
添加依赖工具的下载
make protoc make protoc-gen-go make protoc-gen-go-grpc make protoc-gen-grpc-gateway make protoc-gen-openapiv2
-
仅版本号发生变更时才执行 sed
- 更改了 scripts/version.sh 中的 update 方法;
- 仅当先前与当前版本号不一致才更改 microservice.openapiv2.yaml 文件;
- 更改了 /tmp/microservice.openapiv2.yaml 生成临时文件地址;
Fixed
-
在 “oidc authenticator” 的 logger 存在空指针错误
异常代码位置
github.com/grpc-kit/pkg@v0.3.0/cfg/security.go:76
当设置的 “oidc issuer” 可访问,但未正常返回 “/.well-known/openid-configuration” 日志输出触发了空指针。
[0.3.0] - 2023-03-10
Added
-
新增 “组织代码” 作为所有 proto 包名前缀
-
默认 “组织代码” 取值为 “grpc-kit”
-
根据规则自动生成内置变量:应用名称、服务包名、服务标题、服务代码
APPNAME、PROTO_PACKAGE、SERVICE_TITLE、SERVICE_CODE
-
-
对 microservice.proto 文件中的功能注解分离并声明式
-
分离 “google.api.http” 功能到文件 “microservice.gateway.yaml”
文档地址:https://github.com/googleapis/googleapis/blob/master/google/api/service.proto
-
分离 “grpc.gateway.protoc_gen_openapiv2.options” 功能到文件 “microservice.openapiv2.yaml”
文档地址:https://github.com/grpc-ecosystem/grpc-gateway/internal/descriptor/openapiconfig/openapiconfig.proto
-
-
去掉 gogo 模块,升级 grpc-gateway v2 版本
- 移除了 https://github.com/gogo/protobuf 的依赖;
- 升级了 grpc-gateway 为 v2 版本;
-
重新规范公知类 proto 的文件存放目录
- 更改了 https://github.com/grpc-kit/api 原先 proto 路径规范;
proto/v1/example.proto proto/v1/tracing.proto
更改为以下格式:
known/status/v1/response.proto known/example/v1/example.proto known/config/v1/config.proto
- 更改了 proto 的包名称:
grpc.kit.api.proto.v1
更改为以下前缀:
grpc_kit.api.known.
-
更改库 “errors” 为 “errs” 防止对标准库重名
- 更改 “github.com/grpc-kit/pkg/errors” 为 “github.com/grpc-kit/pkg/errs”;
- 升级 proto 使用 “google.golang.org/protobuf/proto” 版本
- 状态使用公知版本 “grpc_kit.api.known.status.Status” 结构体
-
移除 pkg/api 中使用 gogo 类库
- 去除由 “protoc-gen-gogo” 生成的 “pb.go” 文件
- 统一使用新规范后的 “grpc-kit/api proto” 生成的 “pb.go” 文件
-
使用 gitlab-ci runner 为 shell 添加默认变量
- 默认模版添加以下变量;
# 默认全局变量 variables: CGO_ENABLED: "0" GIT_SSL_NO_VERIFY: "true" #GO111MODULE: "on" #GOPROXY: "https://goproxy.cn" #GOSUMDB: "sum.golang.google.cn" #GOPRIVATE: "" #GOPATH: "/home/gitlab-runner/go"
Fixed
-
make lint 首次无法正常运行
- 首次代码初始化后 “api/” 目录下不存在 “*.pb.go” 代码,导致无法引用;
- 通过在执行
make lint
之前,做 “proto” 文件的序列化;