{"record":{"id":"3816a80344ff5a98","repo":"goreleaser/goreleaser","slug":"invalid-list-of-artifacts-to-sign-s","errorCode":null,"errorMessage":"invalid list of artifacts to sign: %s","messagePattern":"invalid list of artifacts to sign: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/pipe/sign/sign.go","lineNumber":126,"sourceCode":"\t\t\t\tfilters = append(\n\t\t\t\t\tfilters,\n\t\t\t\t\tartifact.And(\n\t\t\t\t\t\tartifact.ByTypes(artifact.ReleaseUploadableTypes()...),\n\t\t\t\t\t\tartifact.Not(artifact.ByTypes(artifact.Signature, artifact.Certificate)),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\tcase \"archive\":\n\t\t\t\tfilters = append(filters, artifact.ByType(artifact.UploadableArchive))\n\t\t\tcase \"binary\":\n\t\t\t\tfilters = append(filters, artifact.ByType(artifact.UploadableBinary))\n\t\t\tcase \"sbom\":\n\t\t\t\tfilters = append(filters, artifact.ByType(artifact.SBOM))\n\t\t\tcase \"package\":\n\t\t\t\tfilters = append(filters, artifact.ByType(artifact.LinuxPackage))\n\t\t\tcase \"none\": // TODO(caarlos0): this is not very useful, lets remove it.\n\t\t\t\treturn pipe.ErrSkipSignEnabled\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"invalid list of artifacts to sign: %s\", cfg.Artifacts)\n\t\t\t}\n\n\t\t\tfilters = append(filters, artifact.ByIDs(cfg.IDs...))\n\t\t\treturn sign(ctx, cfg, ctx.Artifacts.Filter(artifact.And(filters...)).List())\n\t\t})\n\t}\n\terr := g.Wait()\n\tif err != nil && !pipe.IsSkip(err) {\n\t\treturn err\n\t}\n\n\tif rerr := ctx.Artifacts.Refresh(); rerr != nil {\n\t\treturn rerr\n\t}\n\treturn err\n}\n\nfunc sign(ctx *context.Context, cfg config.Sign, artifacts []*artifact.Artifact) error {","sourceCodeStart":108,"sourceCodeEnd":144,"githubUrl":"https://github.com/goreleaser/goreleaser/blob/f5edd7395693c0c6b501dc722d445d2e86af854d/internal/pipe/sign/sign.go#L108-L144","documentation":"The sign pipe filters which artifacts to sign via the `artifacts` config field, which accepts a fixed set of values (checksum, all, source, package, archive, binary, sbom, none). Any other value causes this error listing the invalid configured value. It is a configuration validation error raised while building the artifact filters.","triggerScenarios":"A `signs:` (or similar) config block contains `artifacts: <value>` where value is not one of: all, checksum, source, package, archive, binary, sbom, none — e.g. a typo like `artifact:` pluralization mistakes, or `artifacts: bins`.","commonSituations":"Typo (`archives` vs `archive`, `checksus` vs `checksum`); copying config from an older GoReleaser version where allowed values differed; YAML indentation making a list render as an unexpected value.","solutions":["Set artifacts to one of the allowed values: all, checksum, source, package, archive, binary, sbom, none","Run `goreleaser check` to validate the config schema before releasing","Consult the GoReleaser sign pipe docs for the version in use, since accepted values changed across majors","If you intended to skip signing, use `artifacts: none`"],"exampleFix":"# before\nsigns:\n  - artifacts: bins\n    certificate: \"${artifact}.pem\"\n# after\nsigns:\n  - artifacts: checksum\n    certificate: \"${artifact}.pem\"","handlingStrategy":"validation","validationCode":"// Validate sign artifacts values before running goreleaser\nvalid := map[string]bool{\n\t\"all\": true, \"checksum\": true, \"source\": true, \"package\": true,\n\t\"archive\": true, \"binary\": true, \"sbom\": true, \"none\": true,\n}\nfor _, s := range cfg.Signs {\n\tfor _, a := range s.Artifacts {\n\t\tif !valid[strings.ToLower(a)] {\n\t\t\treturn fmt.Errorf(\"signs.artifacts %q invalid; use all|checksum|source|package|archive|binary|sbom|none\", a)\n\t\t}\n\t}\n}","typeGuard":"func isValidSignArtifacts(v string) bool {\n\tswitch v {\n\tcase \"all\", \"checksum\", \"source\", \"package\", \"archive\", \"binary\", \"sbom\", \"none\":\n\t\treturn true\n\t}\n\treturn false\n}","tryCatchPattern":"if err := run(ctx); err != nil {\n\tif strings.Contains(err.Error(), \"invalid list of artifacts to sign\") {\n\t\tlog.Fatalf(\"fix signs.artifacts in .goreleaser.yaml: %v\", err)\n\t}\n\treturn err\n}","preventionTips":["Run `goreleaser check` in CI to catch schema issues early","Only use documented values for signs.artifacts","Watch for pluralization typos (archive vs archives)","Re-check config when upgrading GoReleaser major versions"],"tags":["goreleaser","sign","config","validation"],"backgroundTag":"invalid-config-value","analyzedSha":"f5edd7395693c0c6b501dc722d445d2e86af854d","analyzedAt":"2026-09-05T09:57:18.807Z","contentChangedAt":"2026-09-05T09:57:18.807Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}