Some checks failed
Build and Deploy Backend / build-and-deploy (push) Failing after 4m28s
## 变更内容
### k8s/ingress.yaml
- 新增 /xiaozhi/v1/ 路径规则,将 WebSocket 流量路由到 hw-ws-svc:8888
- Traefik 最长前缀优先,/xiaozhi/v1/ 不影响 / 下的 Django 路由
### hw_service_go/k8s/service.yaml
- Service 类型由 LoadBalancer 改为 ClusterIP
- 移除阿里云 SLB 注解(通过 Traefik Ingress 统一暴露,不再需要独立公网 IP)
### hw_service_go/k8s/deployment.yaml
- 镜像地址改为 ${CI_REGISTRY_IMAGE}/hw-ws-service:latest 占位符
- CI/CD 部署时统一通过 sed 替换为华为云 SWR 实际地址
### hw_service_go/internal/server/server.go
- 新增 GET /xiaozhi/v1/healthz 接口,返回 {"status":"ok","active_connections":N}
- 用于部署后验证服务存活及当前连接数
### .gitea/workflows/deploy.yaml
- 新增 Build and Push HW WebSocket Service 步骤,构建并推送 hw_service_go 镜像
- 部署步骤新增 kubectl apply hw_service_go/k8s/deployment.yaml 和 service.yaml
- 新增 kubectl rollout restart deployment/hw-ws-service
### run.sh
- 本地同时启动 Django + hw_service_go 的开发脚本
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
34 lines
703 B
Go
34 lines
703 B
Go
package config
|
||
|
||
import (
|
||
"log"
|
||
"os"
|
||
)
|
||
|
||
// Config 保存所有服务配置,全部通过环境变量注入(12-Factor App)。
|
||
type Config struct {
|
||
WSHost string
|
||
WSPort string
|
||
RTCBackendURL string
|
||
}
|
||
|
||
// Load 从环境变量读取配置,必填项缺失时直接 Fatal。
|
||
func Load() *Config {
|
||
backendURL := getEnv("HW_RTC_BACKEND_URL", "")
|
||
if backendURL == "" {
|
||
log.Fatal("config: HW_RTC_BACKEND_URL is required")
|
||
}
|
||
return &Config{
|
||
WSHost: getEnv("HW_WS_HOST", "0.0.0.0"),
|
||
WSPort: getEnv("HW_WS_PORT", "8888"),
|
||
RTCBackendURL: backendURL,
|
||
}
|
||
}
|
||
|
||
func getEnv(key, fallback string) string {
|
||
if v := os.Getenv(key); v != "" {
|
||
return v
|
||
}
|
||
return fallback
|
||
}
|