在编写jenkins管道时,提交每个新更改以查看它是否有效似乎非常不方便。

是否有一种方法可以在本地执行这些而不提交代码?


当前回答

有一些限制,对于脚本管道,我使用这个解决方案:

使用内联groovy脚本的管道作业:


node('master') {
    stage('Run!') {
                def script = load('...you job file...')
    }
}

用于测试的Jenkinsfile具有与lesfuret相同的结构:


def execute() {
 ... main job code here ...
}
execute()

其他回答

据我所知,这个管道插件是新的Jenkinsfile机制的“引擎”,所以我非常肯定你可以用它来本地测试你的脚本。

我不确定是否有任何额外的步骤,当你复制到一个Jenkinsfile,但语法等应该完全相同。

编辑:在“引擎”上找到了参考,检查这个功能描述,最后一段,第一个条目。

您可以验证您的管道以找出语法问题。Jenkins有很好的用于Jenkisfile验证的API - https://jenkins_url/pipeline-model-converter/validate

使用curl并传递.Jenkinsfile,您将立即得到语法检查

curl --user username:password -X POST -F "jenkinsfile=<jenkinsfile" https://jenkins_url/pipeline-model-converter/validate

您可以将此工作流添加到编辑器:

VS代码 崇高的文本

您不能在本地执行Pipeline脚本,因为它的全部目的是编写Jenkins脚本。(这就是为什么Jenkins文件最好保持简短,并限制在实际处理Jenkins特性的代码中;你实际的构建逻辑应该通过外部进程或构建工具来处理,你可以通过一行sh或bat步骤调用它们。)

如果你想测试对Jenkinsfile的修改,但不提交,可以使用1.14中添加的Replay功能。

JENKINS-33925跟踪自动测试框架的特性请求。

Jenkins有一个“重放”功能,它可以让你快速重放作业而不更新源:

我使用重放未来,做一些更新和运行迅速。