GoogleContainerTools/skaffold · error
can't upgrade to %s, build.acr is not supported anymore, ple
Error message
can't upgrade to %s, build.acr is not supported anymore, please remove it manually
What it means
The v1alpha5→next Upgrade() refuses to run when the top-level build section uses the removed AzureContainerBuild (build.acr) builder, since there is no automatic migration target for it in the next version. Rather than silently dropping the builder, the upgrade aborts and tells the user to remove the field manually.
Source
Thrown at pkg/skaffold/schema/v1alpha5/upgrade.go:38
"fmt"
"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/schema/util"
next "github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/schema/v1beta1"
pkgutil "github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/util"
)
// Upgrade upgrades a configuration to the next version.
// Config changes from v1alpha5 to v1beta1:
// 1. Additions:
// - KanikoCache struct, KanikoBuild.Cache
// - BazelArtifact.BuildArgs
// 2. Removals:
// - AzureContainerBuilder
// 3. No updates
func (c *SkaffoldConfig) Upgrade() (util.VersionedConfig, error) {
if c.Build.AzureContainerBuild != nil {
return nil, fmt.Errorf("can't upgrade to %s, build.acr is not supported anymore, please remove it manually", next.Version)
}
for _, profile := range c.Profiles {
if profile.Build.AzureContainerBuild != nil {
return 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)
}
}
var newConfig next.SkaffoldConfig
pkgutil.CloneThroughJSON(c, &newConfig)
newConfig.APIVersion = next.Version
return &newConfig, nil
}
View on GitHub (pinned to a1189de023)
Solutions
- Delete the build.acr block from skaffold.yaml and move ACR builds into build.artifacts entries with an explicit docker/jib builder, then re-run the upgrade
- Use `skaffold fix` after manually removing the field
- Check each profile too — profile-level build.acr triggers the sibling error
Example fix
# before
build:
acr: {}
# after
build:
artifacts:
- image: myimg
docker: {} Defensive patterns
Strategy: validation
Validate before calling
if cfg.Build.AzureContainerBuild != nil {
return errors.New("remove build.acr before upgrading")
} Type guard
func hasAzureBuild(b BuildConfig) bool { return b.AzureContainerBuild != nil } Try / catch
if _, err := cfg.Upgrade(); err != nil {
if strings.Contains(err.Error(), "build.acr is not supported anymore") {
// prompt user to remove the field
}
} Prevention
- Search skaffold.yaml for 'acr:' before version upgrades
- Migrate ACR usage to artifact-level builders proactively
- Read schema release notes for removed fields
When it happens
Trigger: Calling SkaffoldConfig.Upgrade() (or skaffold fix / upgrade path) on a config where c.Build.AzureContainerBuild != nil.
Common situations: skaffold.yaml files written when Azure Container builder (acr) was supported, being upgraded to a version where build.acr was deleted from the schema.
Related errors
- can't upgrade to %s, profiles.build.acr is not supported any
- there's no version to upgrade from "latest"
- unknown panic
- converting deploy.kpt isn't currently supported
- can't merge defaultNamespace property from kustomize into ku
AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05).
Data as JSON: /api/errors/06aa048ab031ac06.
Report an issue: GitHub.