如何通过groovy脚本控制台从jenkinsfile批准脚本片段?
在我的jenkins管道文件中,我使用从.json文件JsonSlurperClassic
读取构建配置。但是,这引入了需要 在进程内“脚本批准”
页面上批准的代码。通过GUI执行此操作时,效果很好。
但是,我还有一个脚本会自动设置我的jenkins机器,该机器将创建不需要任何GUI操作即可使用的现成机器。该脚本已使用jenkins脚本控制台批准从属启动命令。在脚本控制台中执行此操作的常规代码如下所示。
def language = 'system-command';def scriptSnippet = 'ssh me@slavemachine java -jar ~/bin/slave.jar';
def scriptApproval = Jenkins.instance.getExtensionList(
'org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval')[0];
def scriptHash = scriptApproval.hash(scriptSnippet, language);
scriptApproval.approveScript(scriptHash);
效果很好,但现在我想使用相同的代码来批准来自我的管道的脚本片段。我与交换了前两行
def language = 'groovy'def scriptSnippet = 'new groovy.json.JsonSlurperClassic';
其中,scriptSnippet
从所拍摄的scriptApproval.xml
文件。执行此操作会<approvedScriptHashes>
向scriptApproval.xml
文件中添加一个新条目,但不会删除<pendingSignature>
包含脚本片段的条目。这意味着它不起作用。
我的猜测是,该语言是错误的,但是我尝试过的其他值都喜欢groovy-sh
或system-commands
不起作用。您有什么想法为什么不起作用?
感谢您的时间。
回答:
您可以使用ScriptApproval#approveSignature
方法。这是一个适用于我的詹金斯2.85的示例
def signature = 'new groovy.json.JsonSlurperClassic'org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.get().approveSignature(signature)
以上是 如何通过groovy脚本控制台从jenkinsfile批准脚本片段? 的全部内容, 来源链接: utcz.com/qa/398162.html