{"record":{"id":"d072bfa4445a9d19","repo":"GoogleContainerTools/skaffold","slug":"can-t-upgrade-to-s-profiles-build-acr-is-not-sup","errorCode":null,"errorMessage":"can't upgrade to %s, profiles.build.acr is not supported anymore, please remove it from the %s profile manually","messagePattern":"can't upgrade to (.+?), profiles\\.build\\.acr is not supported anymore, please remove it from the (.+?) profile manually","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/skaffold/schema/v1alpha5/upgrade.go","lineNumber":43,"sourceCode":")\n\n// Upgrade upgrades a configuration to the next version.\n// Config changes from v1alpha5 to v1beta1:\n// 1. Additions:\n//   - KanikoCache struct, KanikoBuild.Cache\n//   - BazelArtifact.BuildArgs\n// 2. Removals:\n//   - AzureContainerBuilder\n// 3. No updates\n\nfunc (c *SkaffoldConfig) Upgrade() (util.VersionedConfig, error) {\n\tif c.Build.AzureContainerBuild != nil {\n\t\treturn nil, fmt.Errorf(\"can't upgrade to %s, build.acr is not supported anymore, please remove it manually\", next.Version)\n\t}\n\n\tfor _, profile := range c.Profiles {\n\t\tif profile.Build.AzureContainerBuild != nil {\n\t\t\treturn nil, fmt.Errorf(\"can't upgrade to %s, profiles.build.acr is not supported anymore, please remove it from the %s profile manually\", next.Version, profile.Name)\n\t\t}\n\t}\n\n\tvar newConfig next.SkaffoldConfig\n\n\tpkgutil.CloneThroughJSON(c, &newConfig)\n\tnewConfig.APIVersion = next.Version\n\n\treturn &newConfig, nil\n}\n","sourceCodeStart":25,"sourceCodeEnd":54,"githubUrl":"https://github.com/GoogleContainerTools/skaffold/blob/a1189de023efc32d4b8e11f395acc678aa555011/pkg/skaffold/schema/v1alpha5/upgrade.go#L25-L54","documentation":"Same guard as the top-level build.acr error but applied per-profile: if any profile's Build.AzureContainerBuild is set, v1alpha5's Upgrade() aborts because profiles.build.acr cannot be auto-migrated. The profile's Name is included so the user knows exactly which profile to edit.","triggerScenarios":"Calling SkaffoldConfig.Upgrade() on a config where any c.Profiles[i].Build.AzureContainerBuild != nil.","commonSituations":"Older skaffold.yaml with profile-specific ACR overrides (e.g. a 'prod' profile using acr) being upgraded past the version where the Azure builder was removed.","solutions":["Remove the acr block from the named profile's build section and re-run the upgrade","Re-express ACR usage in that profile via artifact-level builders (docker with ACR registry) instead","Run `skaffold fix` after manual removal"],"exampleFix":"# before\nprofiles:\n  - name: prod\n    build:\n      acr: {...}\n# after\nprofiles:\n  - name: prod\n    build:\n      artifacts:\n        - image: myimg\n          docker: {}","handlingStrategy":"validation","validationCode":"for _, p := range cfg.Profiles {\n\tif p.Build.AzureContainerBuild != nil {\n\t\treturn fmt.Errorf(\"profile %s uses removed build.acr\", p.Name)\n\t}\n}","typeGuard":"func profileHasAzure(p Profile) bool { return p.Build != nil && p.Build.AzureContainerBuild != nil }","tryCatchPattern":"if _, err := cfg.Upgrade(); err != nil {\n\tif strings.Contains(err.Error(), \"profiles.build.acr\") {\n\t\t// extract profile name from message and patch it\n\t}\n}","preventionTips":["Audit every profile's build section for legacy builders before upgrading","Normalize profiles to use artifact-level config","Run a schema lint across all profiles in CI"],"tags":["schema-upgrade","azure","profiles","config-migration"],"backgroundTag":"unsupported-builder-removed","analyzedSha":"a1189de023efc32d4b8e11f395acc678aa555011","analyzedAt":"2026-09-05T12:09:27.064Z","contentChangedAt":"2026-09-05T12:09:27.064Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}