实现七月迭代公共技术基础
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s
This commit is contained in:
57
cmd/foundation-check/main.go
Normal file
57
cmd/foundation-check/main.go
Normal file
@@ -0,0 +1,57 @@
|
||||
// Command foundation-check 执行公共基础迁移前后发布门禁。
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/bytedance/sonic"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/break/junhong_cmp_fiber/internal/infrastructure/releasegate"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/config"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/database"
|
||||
)
|
||||
|
||||
func main() {
|
||||
phase := flag.String("phase", releasegate.PhasePre, "检查阶段:pre 或 post")
|
||||
timeout := flag.Duration("timeout", time.Minute, "检查超时时间")
|
||||
flag.Parse()
|
||||
|
||||
if err := run(*phase, *timeout); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "公共基础发布门禁失败:%v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func run(phase string, timeout time.Duration) error {
|
||||
cfg, err := config.Load()
|
||||
if err != nil {
|
||||
return fmt.Errorf("加载配置失败:%w", err)
|
||||
}
|
||||
db, err := database.InitPostgreSQL(&cfg.Database, zap.NewNop())
|
||||
if err != nil {
|
||||
return fmt.Errorf("连接 PostgreSQL 失败:%w", err)
|
||||
}
|
||||
if sqlDB, dbErr := db.DB(); dbErr == nil {
|
||||
defer func() { _ = sqlDB.Close() }()
|
||||
}
|
||||
ctx, cancel := context.WithTimeout(context.Background(), timeout)
|
||||
defer cancel()
|
||||
report, err := releasegate.NewChecker(db).Run(ctx, phase)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
encoded, err := sonic.Marshal(report)
|
||||
if err != nil {
|
||||
return fmt.Errorf("序列化门禁报告失败:%w", err)
|
||||
}
|
||||
fmt.Println(string(encoded))
|
||||
if !report.Passed() {
|
||||
return fmt.Errorf("发现阻断项,请按稳定错误码处理后重试")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user