{"record":{"id":"90c14b975d4c6ef4","repo":"hashicorp/packer","slug":"the-version-associated-to-the-fingerprint-v-is-co","errorCode":null,"errorMessage":"The version associated to the fingerprint %v is complete. If you wish to add a new build to this bucket a new version must be created by changing the fingerprint.","messagePattern":"The version associated to the fingerprint (.+?) is complete\\. If you wish to add a new build to this bucket a new version must be created by changing the fingerprint\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/hcp/registry/types.bucket.go","lineNumber":507,"sourceCode":"\t\t*version.TemplateType != hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeTEMPLATETYPEUNSET &&\n\t\t*version.TemplateType != templateType {\n\t\treturn fmt.Errorf(\n\t\t\t\"This version was initially created with a %[2]s template. \"+\n\t\t\t\t\"Changing from %[2]s to %[1]s is not supported\",\n\t\t\ttemplateType, *version.TemplateType,\n\t\t)\n\t}\n\n\tlog.Println(\n\t\t\"[TRACE] a valid version was retrieved with the id\", version.ID,\n\t)\n\tbucket.Version.ID = version.ID\n\n\t// If the version is completed and there are no new builds to add, Packer\n\t// should exit and inform the user that artifacts already exists for the\n\t// fingerprint associated with the version.\n\tif bucket.client.IsVersionComplete(version) {\n\t\treturn fmt.Errorf(\n\t\t\t\"The version associated to the fingerprint %v is complete. If you wish to add a new build to \"+\n\t\t\t\t\"this bucket a new version must be created by changing the fingerprint.\",\n\t\t\tbucket.Version.Fingerprint,\n\t\t)\n\t}\n\n\treturn nil\n}\n\n// populateVersion populates the version with the details needed for tracking builds for a Packer run.\n// If a version exists for the said fingerprint, calling initialize on version that doesn't yet exist will call\n// createVersion to create the entry on the HCP packer registry for the given bucket.\n// All build details will be created (if they don't exist) and added to b.Version.builds for tracking during runtime.\nfunc (bucket *Bucket) populateVersion(ctx context.Context) error {\n\t// list all this version's builds so we can figure out which ones\n\t// we want to run against. TODO: pagination?\n\texistingBuilds, err := bucket.client.ListBuilds(ctx, bucket.Name, bucket.Version.Fingerprint)\n\tif err != nil {","sourceCodeStart":489,"sourceCodeEnd":525,"githubUrl":"https://github.com/hashicorp/packer/blob/eb36e3c3e48a036f3e8cc94087636ee72e1303c9/internal/hcp/registry/types.bucket.go#L489-L525","documentation":"HCP Packer versions become complete once all their builds have finished. If initializeVersion finds the version for the current fingerprint is already complete, there is nothing left to register, so Packer aborts with this message telling the user to change the fingerprint to start a new version. The fingerprint is derived from the template's build configuration, so an unchanged template always maps to the same version.","triggerScenarios":"bucket.Initialize() is called and bucket.client.IsVersionComplete(version) returns true — i.e. re-running packer build with an unchanged template after all builds in that fingerprint's version already completed and published artifacts.","commonSituations":"Re-running a successful packer build without changing anything; CI re-triggering a job on the same commit after artifacts were already pushed; iterating on post-processing while build definitions (and thus the fingerprint) stayed identical.","solutions":["Change something in the builds (source image, provisioner content, variables used in builds) so a new fingerprint/version is generated","Explicitly set a new version identifier input if your template uses one, then re-run","If the version is in an undesired complete state, delete the version in HCP Packer and re-run"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Pre-check version completeness before invoking a build\n// v, _ := client.GetVersion(ctx, bucketName, fingerprint)\n// if v != nil && client.IsVersionComplete(v) {\n//     // skip the run or change inputs that affect the fingerprint\n// }","typeGuard":null,"tryCatchPattern":"// Go\nif err := bucket.Initialize(ctx); err != nil {\n\tif strings.Contains(err.Error(), \"is complete\") {\n\t\t// expected idempotent no-op: all builds for this fingerprint already done\n\t\treturn nil // or trigger a new version by changing the fingerprint\n\t}\n\treturn err\n}","preventionTips":["Treat this error as expected behavior when re-running unchanged templates","Bake a changing input (e.g. timestamp, source image ID) into builds to force new fingerprints in CI","Use a version-increment scheme (variables) for repeatable builds","Check the HCP portal for the fingerprint's version state before re-running"],"tags":["hcp-packer","fingerprint","version-complete","idempotency"],"backgroundTag":"version-already-complete","analyzedSha":"eb36e3c3e48a036f3e8cc94087636ee72e1303c9","analyzedAt":"2026-09-05T13:20:43.127Z","contentChangedAt":"2026-09-05T13:20:43.127Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}