我想尝试一些Jenkins Pipeline DSL方法。样例代码如下:
node("linux-agent") {
sh "ls -ltra"
}
我只是想快速尝试对脚本进行一些更改。因此,我尝试在“Jenkins脚本控制台”中运行它。但似乎这种方式不起作用。我必须每次编辑作业配置并运行作业来测试我的代码。
- 有没有一种快速的方法可以测试脚本更改而不必将它们放入管道作业中?
- 有办法在“Jenkins脚本控制台”中运行此脚本吗?
提前感谢!!
我想尝试一些Jenkins Pipeline DSL方法。样例代码如下:
node("linux-agent") {
sh "ls -ltra"
}
我只是想快速尝试对脚本进行一些更改。因此,我尝试在“Jenkins脚本控制台”中运行它。但似乎这种方式不起作用。我必须每次编辑作业配置并运行作业来测试我的代码。
提前感谢!!
创建一个临时项目
为该项目运行构建
打印日志
之后删除该项目
import org.jenkinsci.plugins.workflow.job.WorkflowJob;
import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition;
def jobName = 'tmp-project'
script = '''
node("linux-agent") {
sh "ls -ltra"
}
'''
// Create Project
p = Jenkins.instance.createProject(WorkflowJob, jobName)
p.setDefinition(new CpsFlowDefinition(script, false));
p.save()
// Schedule Build
Jenkins.instance.queue.schedule(p, 0, null, null)
// Wait until build starts
while( p.builds.size() < 1 ) { }
// Wait until build finishes
def execution = p.builds[0].getExecutionPromise().get()
while (! execution.isComplete() ){}
// Print log and delete project
println p.builds[0].log
p.delete()
Groovy Pipeline DSL运行时是在workflow-cps-plugin的基础上实现的,它依赖于groovy plugin和Groovy CPS。核心步骤由workflow-basic-steps-plugin提供。
关键类似乎是
大多数地方都缺乏注释,但CpsFlowExecution.java中有有用的细节。
你不能实例化一个DSL
(提供管道核心的steps
变量)而不需要FlowExecutionOwner
,它需要CpsFlowExecution
,而后者又需要CPS解释器。 CpsFlowExecution
与所有内容都有很强的联系。代码还期望this
(您的脚本)将是CpsScript
的实例,而脚本控制台只是一个普通的Groovy Script
实例。
在我看来,您需要一个插件来接管脚本控制台,以实例化启用CPS的解释器并伪造FlowExecution。对我来说太难了。