Path: blob/main/components/image-builder-mk3/cmd/run.go
2497 views
// Copyright (c) 2021 Gitpod GmbH. All rights reserved.1// Licensed under the GNU Affero General Public License (AGPL).2// See License.AGPL.txt in the project root for license information.34package cmd56import (7"context"8"time"910"github.com/gitpod-io/gitpod/common-go/baseserver"1112"github.com/gitpod-io/gitpod/common-go/log"13"github.com/gitpod-io/gitpod/image-builder/api"14"github.com/gitpod-io/gitpod/image-builder/pkg/orchestrator"15"github.com/gitpod-io/gitpod/image-builder/pkg/resolve"1617"github.com/opentracing/opentracing-go"18"github.com/spf13/cobra"19)2021// runCmd represents the run command22var runCmd = &cobra.Command{23Use: "run",24Short: "Starts the image-builder service",25Run: func(cmd *cobra.Command, args []string) {26cfg := getConfig()27log.WithField("config", cfg).Info("Starting image-builder-mk3")2829srv, err := baseserver.New("image-builder-mk3",30baseserver.WithConfig(cfg.Server),31baseserver.WithVersion(Version),32)33if err != nil {34log.WithError(err).Fatal("Failed to setup server.")35}3637ctx, cancel := context.WithCancel(context.Background())38defer cancel()39span, ctx := opentracing.StartSpanFromContext(ctx, "/cmd/Run")40defer span.Finish()4142service, err := orchestrator.NewOrchestratingBuilder(cfg.Orchestrator)43if err != nil {44log.Fatal(err)45}46if cfg.RefCache.Interval != "" && len(cfg.RefCache.Refs) > 0 {47interval, err := time.ParseDuration(cfg.RefCache.Interval)48if err != nil {49log.WithError(err).WithField("interval", cfg.RefCache.Interval).Fatal("interval is not a valid duration")50}5152resolver := &resolve.PrecachingRefResolver{53Resolver: &resolve.StandaloneRefResolver{},54Candidates: cfg.RefCache.Refs,55}56go resolver.StartCaching(ctx, interval)57service.RefResolver = resolver58}5960err = service.RegisterMetrics(srv.MetricsRegistry())61if err != nil {62log.WithError(err).Fatal("Failed to register metrics.")63}6465err = service.Start(ctx)66if err != nil {67log.WithError(err).Fatal("Failed to start orchestrator service.")68}6970api.RegisterImageBuilderServer(srv.GRPC(), service)7172err = srv.ListenAndServe()73if err != nil {74log.WithError(err).Fatal("Failed to start server")75}76},77}7879func init() {80rootCmd.AddCommand(runCmd)81}828384