Kni*_*chi 13 jenkins jenkins-pipeline
在我的jenkins管道文件中,我使用从.json文件JsonSlurperClassic
中读取构建配置.但是,这会引入需要通过进程内脚本批准页面批准的代码.当我在GUI上执行此操作时,此工作正常.
但是我还有一个脚本可以自动设置我的jenkins机器,它应该创建一个不需要进一步GUI操作的现成工作机器.此脚本已使用jenkins脚本控制台批准从属启动命令.在脚本控制台中执行此操作的groovy代码如下所示.
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);
Run Code Online (Sandbox Code Playgroud)
这工作正常,但现在我想使用相同的代码来批准来自我的管道的脚本片段.我交换了前两行
def language = 'groovy'
def scriptSnippet = 'new groovy.json.JsonSlurperClassic';
Run Code Online (Sandbox Code Playgroud)
其中,scriptSnippet
从所拍摄的scriptApproval.xml
文件.执行此操作会<approvedScriptHashes>
向scriptApproval.xml
文件添加新条目,但不会删除<pendingSignature>
包含脚本片段的条目.这意味着它不起作用.
我的猜测是,这种语言是错误的,但我试过的其他价值观groovy-sh
或者system-commands
也没有用.你有什么想法它不起作用吗?
感谢您的时间.
Vit*_*nko 19
你可以使用ScriptApproval#approveSignature
方法.这是一个适用于我的Jenkins 2.85的示例
def signature = 'new groovy.json.JsonSlurperClassic'
org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.get().approveSignature(signature)
Run Code Online (Sandbox Code Playgroud)
小智 5
import org.jenkinsci.plugins.scriptsecurity.scripts.*
toApprove = ScriptApproval.get().getPendingScripts().collect()
toApprove.each {pending -> ScriptApproval.get().approveScript(pending.getHash())}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5061 次 |
最近记录: |