「Jenkins Pipeline」- 开发工具 | 开发环境 | IDE

问题

背景 | 原因 | 诱因

在 Jenkinsfile 中,如果需要添加复杂的功能,则简单地编辑代码并不能满足需求。针对该问题,需要引入相关的工具,来帮助我们完成 Jenkinsfile 编写。

该笔记将记录:与 Jenkinsfile 开发相关的内容、相关工具,以及常见问题的解决方案。

分析

官方 Jenkins/Pipeline Development Tools 文档,提供与 Jenkins Pipeline 相关的工具,以协助我们开发工作。

Blue Ocean Editor

Blue Ocean Pipeline Editor

在 Jenkins 中,Blue Ocean Pipeline Editor,内置的 Pipeline 的编辑器,图形化操作,所见即所得。

其能够创建 Pipeline 脚本,并能提交到 SCM 仓库中。

Command-line Pipeline Linter

命令行的 Jenkinfile 的 lint 工具,用于检查 Pipeline 是否合法有效;

使用 SSH 命令:

# 现在 Jenkins 中执行如下操作:
#(1)用户中配置 SSH PUBLIC KEY;
#(2)Manage Jenkins > Configure Global Security > SSH Server > SSHD Port > Random

curl -Lv https://JENKINS_URL/login 2>&1 | grep -i 'x-ssh-endpoint'
# X-SSH-Endpoint: localhost:53801
ssh -p $JENKINS_SSHD_PORT $JENKINS_HOSTNAME declarative-linter < Jenkinsfile
# Jenkinsfile successfully validated.

也可以使用 cURL 命令:

# curl (REST API)
# Assuming "anonymous read access" has been enabled on your Jenkins instance.
# JENKINS_URL=[root URL of Jenkins master]
# JENKINS_CRUMB is needed if your Jenkins master has CRSF protection enabled as it should
JENKINS_CRUMB=`curl "$JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)"`
curl -X POST -H $JENKINS_CRUMB -F "jenkinsfile=<Jenkinsfile" $JENKINS_URL/pipeline-model-converter/validate

“Replay” Pipeline Runs with Modifications

Replay | https://www.jenkins.io/doc/book/pipeline/development/#replay

在 Jenkins 中重新执行脚本;

局限性:
(1)没有保存功能。直接修改并运行后无法取回;
(2)行为可能有所不同。重新运行时,对于非多分支流水里的提交信息肯能发生了变化;

IDE Integrations

详细参考各个 IDE 的官方文档;

针对部分 IDE 工具,其内包含相关的插件:
1)Eclipse – Jenkins Editor
2)VisualStudio Code – Jenkins Pipeline Linter Connector
3)Atom – linter-jenkins package

通过 Eclipse 进行 Pipeline 开发

Best practices for writing Jenkins shared libraries

WIP Jenkins Pipelie 开发 Jenkins Pipeline 的最佳实践(包括自动化测试);

辅助工具

在 Jenkins Pipeline 中,包含内建文档和片段生成器,用于帮助开发 Pipeline 脚本(该内建文档和片段生成器与 Jenkins 的版本相关)。

参考

Jenkins/Pipeline Development Tools
Pipeline Development Tools