{"record":{"id":"f3e7d17329f9605a","repo":"goreleaser/goreleaser","slug":"audit-script-is-set-but-install-enforcement-is-s","errorCode":null,"errorMessage":"audit_script is set, but install_enforcement is %s instead of continuously_enforce","messagePattern":"audit_script is set, but install_enforcement is (.+?) instead of continuously_enforce","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/pipe/iru/iru.go","lineNumber":206,"sourceCode":"\t\t}\n\t}\n\tif enforcement != \"\" && !slices.Contains(installEnforcements, enforcement) {\n\t\treturn fmt.Errorf(\"invalid install_enforcement: %s\", enforcement)\n\t}\n\tif unzipKnown && installType != \"\" {\n\t\tif installType == \"zip\" && unzipLocation == \"\" {\n\t\t\treturn errors.New(\"install_type is zip, but unzip_location is not set\")\n\t\t}\n\t\tif installType != \"zip\" && unzipLocation != \"\" {\n\t\t\treturn fmt.Errorf(\"unzip_location is set, but install_type is %s instead of zip\", installType)\n\t\t}\n\t}\n\tif auditKnown && enforcement != \"\" {\n\t\tif enforcement == \"continuously_enforce\" && auditScript == \"\" {\n\t\t\treturn errors.New(\"install_enforcement is continuously_enforce, but audit_script is not set\")\n\t\t}\n\t\tif enforcement != \"continuously_enforce\" && auditScript != \"\" {\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"audit_script is set, but install_enforcement is %s instead of continuously_enforce\",\n\t\t\t\tenforcement,\n\t\t\t)\n\t\t}\n\t}\n\tif enforcement == \"no_enforcement\" && selfServiceKnown && !selfService {\n\t\treturn errors.New(\"install_enforcement is no_enforcement, but show_in_self_service is not enabled\")\n\t}\n\tif recommendedKnown && recommended && selfServiceKnown && !selfService {\n\t\treturn errors.New(\"self_service_recommended is enabled, but show_in_self_service is not enabled\")\n\t}\n\tif categoryKnown && selfServiceKnown {\n\t\tif selfService && categoryID == \"\" {\n\t\t\treturn errors.New(\"show_in_self_service is enabled, but self_service_category_id is not set\")\n\t\t}\n\t\tif !selfService && categoryID != \"\" {\n\t\t\treturn errors.New(\"self_service_category_id is set, but show_in_self_service is not enabled\")\n\t\t}","sourceCodeStart":188,"sourceCodeEnd":224,"githubUrl":"https://github.com/goreleaser/goreleaser/blob/f5edd7395693c0c6b501dc722d445d2e86af854d/internal/pipe/iru/iru.go#L188-L224","documentation":"audit_script is only valid together with continuously_enforce enforcement, because Iru runs it to audit ongoing compliance. validate() rejects an audit_script combined with any other enforcement value before anything is uploaded.","triggerScenarios":"`iru.audit_script` set while `iru.install_enforcement` is install_once or no_enforcement (or while creating and enforcement resolves to the default install_once because it was left unset... only when explicitly set to a non-continuously_enforce value, since the check requires enforcement != \"\").","commonSituations":"Adding an audit script for compliance without switching enforcement to continuously_enforce; removing enforcement while keeping audit_script; misunderstanding Iru's enforcement model.","solutions":["Set iru.install_enforcement to continuously_enforce to use audit_script.","Remove iru.audit_script if you don't need continuous enforcement.","When updating, drop audit_script by setting it to an explicitly empty value and change enforcement accordingly."],"exampleFix":"# before\niru:\n  install_enforcement: \"install_once\"\n  audit_script: \"audit.sh\"\n# after\niru:\n  install_enforcement: \"continuously_enforce\"\n  audit_script: \"audit.sh\"","handlingStrategy":"validation","validationCode":"if cfg.AuditScript != nil && *cfg.AuditScript != \"\" && cfg.InstallEnforcement != \"continuously_enforce\" { return errors.New(\"audit_script requires install_enforcement: continuously_enforce\") }","typeGuard":"func auditScriptIsConsistent(cfg config.Iru) bool { return cfg.AuditScript == nil || cfg.InstallEnforcement == \"continuously_enforce\" }","tryCatchPattern":"if err := Pipe{}.Publish(ctx); err != nil { if strings.Contains(err.Error(), \"audit_script is set\") { log.Fatal(\"set install_enforcement to continuously_enforce or drop audit_script\") }; return err }","preventionTips":["Always pair audit_script with continuously_enforce","Understand Iru's enforcement model before configuring audits","Review enforcement settings whenever adding/removing audit scripts","Document the pairing rule in your release config comments"],"tags":["goreleaser","validation","config"],"backgroundTag":"conflicting-config-fields","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"}