in runner/runnergroup_run.go [35:91]
func CreateRunnerGroupServer(ctx context.Context,
kubeconfigPath string,
runnerImage string,
rgSpec *types.RunnerGroupSpec,
runnerVerbosity int,
opts ...RunCmdOpt,
) error {
specInStr, err := tweakAndMarshalSpec(rgSpec)
if err != nil {
return err
}
cfg := defaultRunCmdCfg
for _, opt := range opts {
opt(&cfg)
}
appiler, err := cfg.toServerHelmValuesAppiler()
if err != nil {
return err
}
getCli, err := helmcli.NewGetCli(kubeconfigPath, runnerGroupReleaseNamespace)
if err != nil {
return fmt.Errorf("failed to create helm get client: %w", err)
}
_, err = getCli.Get(runnerGroupServerReleaseName)
if err == nil {
return fmt.Errorf("runner group server already exists")
}
ch, err := manifests.LoadChart(runnerGroupServerChartName)
if err != nil {
return fmt.Errorf("failed to load runner group server chart: %w", err)
}
releaseCli, err := helmcli.NewReleaseCli(
kubeconfigPath,
runnerGroupReleaseNamespace,
runnerGroupServerReleaseName,
ch,
runnerGroupReleaseLabels,
helmcli.StringPathValuesApplier(
"name="+runnerGroupServerReleaseName,
"image="+runnerImage,
"runnerGroupSpec="+specInStr,
// runnerVerbosity needs to be surrounded by quotes, so that YAML parse it as a string.
fmt.Sprintf("runnerVerbosity=\"%d\"", runnerVerbosity),
),
appiler,
)
if err != nil {
return fmt.Errorf("failed to create helm release client: %w", err)
}
return releaseCli.Deploy(ctx, 120*time.Second)
}