在做 Jenkins 声明式流水线开发时常会遇到的问题是:Pipeline 看起来没有问题,当提交到代码仓库后进行 Jenkins 构建时发现原来有语法错误,然后再去修改、提交、构建,结果可能还有有其他没有注意到的语法问题。
为了减少这种因为语法错误而需要频繁像代码库去提交的情况,最好还是在提交之前进行“编译”检查,来查看当前的 Pipeline 是否存在语法错误。
经过调查发现 Jenkins 本身提供了这样的 REST API,可以直接使用这个 API 来对 Pipeline 声明式进行语法校验,这个方式需要执行一长串的 curl 命令,看起来似乎很麻烦,如果能在 IDE 里直接运行就好了。VS Code 作为当前当前最流行 IDE 工具,不负期望,果然是有插件的。
本文介绍了两种方式来实现如何对 Jenkins 声明式流水线在 Jenkins 构建执行前进行语法错误检查,这两种方式的原理都是通过调用 Jenkins REST API 来实现的。
注:当前只有声明式流水线支持语法校验,脚本式流水线不支持。
如果使用 Jenkins 回放功能或是使用 Jenkins Web 页面开发 Pipeline 不存在上述问题。
REST API
如果你跟我一样为你的项目开发了 Jenkins Shared Libraries,为了方便使用 REST API,不妨可以在该仓库下面创建一个 linter.sh 文件,并将这个文件加到你的 .gitignore 里,这样你可以在这个文件里配置你的用户名和密码就不会意外的被提交到 Git 仓库中。linter.sh 脚本内容如下ÿ