in pkg/cmdhelpers/workflow_helpers.go [58:94]
func setDeploymentContainerImage(filePath, productionImage string) error {
decode := scheme.Codecs.UniversalDeserializer().Decode
file, err := os.ReadFile(filePath)
if err != nil {
return err
}
k8sObj, _, err := decode(file, nil, nil)
if err != nil {
return err
}
deploy, ok := k8sObj.(*appsv1.Deployment)
if !ok {
return errors.New("could not decode kubernetes deployment")
}
if len(deploy.Spec.Template.Spec.Containers) != 1 {
return errors.New("unsupported number of containers defined in the deployment spec")
}
deploy.Spec.Template.Spec.Containers[0].Image = productionImage
printer := printers.YAMLPrinter{}
out, err := os.OpenFile(filePath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0755)
if err != nil {
return nil
}
defer func() {
if err := out.Close(); err != nil {
log.Errorf("error closing file: %v", err)
}
}()
return printer.PrintObj(deploy, out)
}