「Jenkins Pipeline」- 开发工具、开发环境

  CREATED BY JENKINSBOT

问题描述

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

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

解决方案

Blue Ocean Editor

Blue Ocean Pipeline Editor

Jenkins 中内置了一个 Pipeline 的编辑器,Blue Ocean Pipeline Editor,图形化操作,所见即所得,用于创建 Pipeline 脚本,并能提交到 SCM 仓库中;

Command-line Pipeline Linter

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

使用 SSH 命令:

#!/bin/sh

# 现在 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 命令:

#!/bin/sh

# 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

在 Jenkins 中重新执行脚本;

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

IDE Integrations

某些 IDE 上有相关的插件:
1)Eclipse – Jenkins Editor
2)VisualStudio Code – Jenkins Pipeline Linter Connector
3)Atom – linter-jenkins package

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

通过 Eclipse 进行 Pipeline 开发

Best practices for writing Jenkins shared libraries

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

单元测试

Pipeline 的单元测试工具,用于测试 Pipeline 和共享库;

Jenkins Shared Library Test Harness Example
https://github.com/stchar/pipeline-sharedlib-testharness

相关链接

Jenkins Building Docker Image and Sending to Registry
Building your first Docker image with Jenkins 2: Guide for developers

参考文献

Jenkins/Pipeline
Jenkins/Pipeline Development Tools
Pipeline Development Tools