/
pyo
/
builder
Обзор
Документация
Войти
/
pyo
/
builder
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
develop
cmd/application.go
88 строк
2 KB
ilovepitsa
draft version
25 июн 2025, 18:29
25 июн 2025, 18:29
581515a
Код
Авторство
О чём код?
package cmd import ( "fmt" "net/http" "text/template" "time" "github.com/moby/buildkit/client" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/spf13/afero" "gitverse.ru/pyo/builder/pkg/builder" "gitverse.ru/pyo/builder/pkg/config" "gitverse.ru/pyo/updater/pkg/metrics" // change "go.uber.org/zap" "golang.org/x/net/context" ) type Application struct { Config *config.Config Logger *zap.Logger MetricHandler http.Handler MetricRegistry *prometheus.Registry Builder *builder.DockerBuilder } func (app *Application) RegisterMetrics() { app.MetricRegistry.MustRegister( metrics.CounterDBExecutorOperations, metrics.GaugeDBExecutorOperations, metrics.MetricCountInstanceActivate, metrics.MetricDBExecutorOperationDuration, metrics.MetricDBExecutorRowSelectErrors, metrics.MetricFileOperation, metrics.MetricGaugeInstanceActivate, metrics.MetricProcessDuration, ) } func LoggerFromConfig(cfg *zap.Config) (*zap.Logger, error) { logger, err := cfg.Build() if err != nil { return nil, err } return logger, nil } func InitializeApplication(ctx context.Context, cfgPath string) (*Application, error) { app := &Application{} cfg, err := config.ParseConfig(cfgPath) if err != nil { return nil, err } cfg.SetLoggerDefaults() logger, err := LoggerFromConfig(cfg.Logger) if err != nil { return nil, err } app.Config = cfg app.Logger = logger app.MetricRegistry = prometheus.NewRegistry() handlerOpts := promhttp.HandlerOpts{ ErrorLog: nil, ErrorHandling: 0, Registry: app.MetricRegistry, DisableCompression: false, MaxRequestsInFlight: 0, Timeout: time.Minute, EnableOpenMetrics: true, } app.MetricHandler = promhttp.HandlerFor(app.MetricRegistry, handlerOpts) app.RegisterMetrics() c, err := client.New(ctx, cfg.BuildKitConfig.Conn) if err != nil { return nil, err } t, err := template.ParseGlob(cfg.TmplPattern) if err != nil { fmt.Println(err) return nil, err } templater := builder.NewTemplater(t) b := builder.NewDockerBuilder(cfg, nil, c, logger, afero.Afero{}, templater) app.Builder = b return app, err }