{"id":"d3d4fb247f027d47","repo":"docker/cli","slug":"manifest-s-must-have-an-os-and-architecture-to-be","errorCode":null,"errorMessage":"manifest %s must have an OS and Architecture to be pushed to a registry","messagePattern":"manifest (.+?) must have an OS and Architecture to be pushed to a registry","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/command/manifest/push.go","lineNumber":131,"sourceCode":"\n\t\t\tmanifestPush, err := buildPutManifestRequest(imageManifest, targetRef)\n\t\t\tif err != nil {\n\t\t\t\treturn req, err\n\t\t\t}\n\t\t\treq.mountRequests = append(req.mountRequests, manifestPush)\n\t\t}\n\t}\n\treturn req, nil\n}\n\nfunc buildManifestList(manifests []types.ImageManifest, targetRef reference.Named) (*manifestlist.DeserializedManifestList, error) {\n\ttargetRepo := reference.TrimNamed(targetRef)\n\tdescriptors := make([]manifestlist.ManifestDescriptor, 0, len(manifests))\n\tfor _, imageManifest := range manifests {\n\t\tif imageManifest.Descriptor.Platform == nil ||\n\t\t\timageManifest.Descriptor.Platform.Architecture == \"\" ||\n\t\t\timageManifest.Descriptor.Platform.OS == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"manifest %s must have an OS and Architecture to be pushed to a registry\", imageManifest.Ref)\n\t\t}\n\t\tdescriptor, err := buildManifestDescriptor(targetRepo, imageManifest)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdescriptors = append(descriptors, descriptor)\n\t}\n\n\treturn manifestlist.FromDescriptors(descriptors)\n}\n\nfunc buildManifestDescriptor(targetRepo reference.Named, imageManifest types.ImageManifest) (manifestlist.ManifestDescriptor, error) {\n\tmanifestRepoHostname := reference.Domain(reference.TrimNamed(imageManifest.Ref))\n\ttargetRepoHostname := reference.Domain(reference.TrimNamed(targetRepo))\n\tif manifestRepoHostname != targetRepoHostname {\n\t\treturn manifestlist.ManifestDescriptor{}, fmt.Errorf(\"cannot use source images from a different registry than the target image: %s != %s\", manifestRepoHostname, targetRepoHostname)\n\t}\n","sourceCodeStart":113,"sourceCodeEnd":149,"githubUrl":"https://github.com/docker/cli/blob/e9452d6e785f6e365712b9d71bd7517591773c86/cli/command/manifest/push.go#L113-L149","documentation":"Error \"manifest %s must have an OS and Architecture to be pushed to a registry\" thrown in docker/cli.","triggerScenarios":"Thrown at cli/command/manifest/push.go:131 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"e9452d6e785f6e365712b9d71bd7517591773c86","analyzedAt":"2026-08-01T07:09:22.474Z","schemaVersion":2}