Jenkins Scriptler脚本需管理员审批,如何自动审批或禁用审批?
解决Scriptler脚本自动审批/禁用审批的方法
方法1:通过Jenkins启动参数直接禁用Scriptler审批
在K8S的Jenkins Deployment配置中,修改Jenkins容器的启动参数,添加-Dscriptler.requireApproval=false:
- 编辑Deployment的YAML文件,找到
spec.template.spec.containers[].args部分,追加该参数 - 示例修改后args:
["--httpPort=8080", "-Dscriptler.requireApproval=false"] - 应用更新:
kubectl apply -f jenkins-deployment.yaml
这个参数是Scriptler插件原生支持的配置项,直接关闭脚本审批要求,操作简单直接。
方法2:用初始化Groovy脚本自动批准所有Scriptler脚本
如果不想完全禁用审批逻辑,而是自动批准目录下的脚本,可通过Jenkins初始化脚本实现:
- 创建Groovy脚本
approve-scriptler-scripts.groovy,内容如下:
import jenkins.model.Jenkins import org.jenkinsci.plugins.scriptler.config.ScriptlerConfiguration import org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval def jenkins = Jenkins.get() def scriptApproval = ScriptApproval.get() def scriptlerConfig = ScriptlerConfiguration.get() // 遍历所有Scriptler脚本并自动审批 scriptlerConfig.scripts.each { script -> def scriptContent = new File(script.filePath).text def hash = scriptApproval.hash(scriptContent) if (!scriptApproval.isApproved(hash)) { scriptApproval.approveScript(hash) println "自动批准Scriptler脚本: ${script.name}" } }
- 在K8S中,将该脚本通过ConfigMap挂载到Jenkins容器的
/var/jenkins_home/init.groovy.d/目录 - 重启Jenkins Pod,初始化脚本会在启动时自动运行,完成所有Scriptler脚本的审批
关于permissive-script-security插件无效的说明
该插件仅针对Jenkins全局脚本(如Jenkinsfile内的脚本片段)生效,不覆盖Scriptler插件独立的审批机制,因此需要配合上述两种方法解决问题。若仍想使用该插件,需检查其版本与Jenkins核心版本的兼容性,建议升级到匹配的兼容版本。
内容的提问来源于stack exchange,提问作者EilonA
相关产品推荐
相关产品推荐

