gito/services/core/internal/config/config.go
toki 518b8a6dcc feat(core): IOP 에이전트 런 브리지 구현 및 워커 확장
-runtime.go에 에이전트 런 브리지 인터op 기능 추가
- runner.go에 HTTP invoccer와 워커 브리지 로직 추가
- postgres.go에 worker_bridge 관련 migration 및 저장소 계층 구현
- model.go에 WorkerBridge 엔터티 모델 추가
- main.go에 워커 브리지 초기화 및 HTTP 서버 통합
- config.go에 워커 브리지 설정 항목 추가
- migration에 worker_bridge 스키마 추가
- agent-roadmap에 iop-agent-run-bridge 페이즈 및 마일스톤 업데이트
- http_invoker.go 새로 추가하여 외부 HTTP 호출 추상화
2026-06-17 19:59:04 +09:00

67 lines
1.7 KiB
Go

package config
import (
"os"
"strconv"
)
type Config struct {
AppEnv string
HTTPAddr string
DatabaseURL string
RedisURL string
ProtoSocketPath string
ProtoSocketHeartbeatSec int
ProtoSocketHeartbeatWait int
ForgejoWebhookSecret string
WorkerEnabled bool
// IOPEndpoint is the base URL of the IOP HTTP dispatch service.
// When empty, agent_run operations are not picked.
IOPEndpoint string
}
func Load() Config {
return Config{
AppEnv: getEnv("APP_ENV", "local"),
HTTPAddr: getEnv("HTTP_ADDR", ":8080"),
DatabaseURL: os.Getenv("DATABASE_URL"),
RedisURL: os.Getenv("REDIS_URL"),
ProtoSocketPath: getEnv("PROTO_SOCKET_PATH", "/proto-socket"),
ProtoSocketHeartbeatSec: getEnvInt("PROTO_SOCKET_HEARTBEAT_SEC", 30),
ProtoSocketHeartbeatWait: getEnvInt("PROTO_SOCKET_HEARTBEAT_WAIT_SEC", 10),
ForgejoWebhookSecret: os.Getenv("FORGEJO_WEBHOOK_SECRET"),
WorkerEnabled: getEnvBool("WORKER_ENABLED", true),
IOPEndpoint: os.Getenv("IOP_ENDPOINT"),
}
}
func getEnv(key, fallback string) string {
if value := os.Getenv(key); value != "" {
return value
}
return fallback
}
func getEnvBool(key string, fallback bool) bool {
value := os.Getenv(key)
if value == "" {
return fallback
}
parsed, err := strconv.ParseBool(value)
if err != nil {
return fallback
}
return parsed
}
func getEnvInt(key string, fallback int) int {
value := os.Getenv(key)
if value == "" {
return fallback
}
parsed, err := strconv.Atoi(value)
if err != nil {
return fallback
}
return parsed
}