in controllers/codebaseimagestream/chain/put_cd_stage_deploy.go [92:134]
func (h PutCDStageDeploy) putCDStageDeploy(ctx context.Context, envLabel, namespace string, spec codebaseApi.CodebaseImageStreamSpec) error {
l := ctrl.LoggerFrom(ctx)
// use name for CDStageDeploy, it is converted from envLabel and cdpipeline/stage now is cdpipeline-stage
name := strings.ReplaceAll(envLabel, "/", "-")
env := strings.Split(envLabel, "/")
pipeline := env[0]
stage := env[1]
stageCrName := fmt.Sprintf("%s-%s", pipeline, stage)
stageCr := &pipelineApi.Stage{}
if err := h.client.Get(
ctx,
types.NamespacedName{
Name: stageCrName,
Namespace: namespace,
},
stageCr,
); err != nil {
return fmt.Errorf("failed to get CDStage %s: %w", stageCrName, err)
}
skip, err := h.skipCDStageDeployCreation(ctx, pipeline, namespace, stageCr)
if err != nil {
return fmt.Errorf("failed to check if CDStageDeploy exists: %w", err)
}
if skip {
l.Info("Skip CDStageDeploy creation.")
return nil
}
cdsd, err := getCreateCommand(ctx, pipeline, stage, name, namespace, spec.Codebase, stageCr.Spec.TriggerType, spec.Tags)
if err != nil {
return fmt.Errorf("failed to construct command to create %v cd stage deploy: %w", name, err)
}
if err = h.create(ctx, cdsd, stageCr); err != nil {
return fmt.Errorf("failed to create %v cd stage deploy: %w", name, err)
}
return nil
}