「Jenkins」- 插件使用记录

问题描述

Jenkins Plugins 中,提供众多的插件来扩展 Jenkins 的功能,以解决在自动化过程中遇到的多种问题(或实现某些功能)。

该笔记将记录:在 Jenkins 中,完成自动化作业的方法,及常见问题的解决方案。

解决方案

隐藏“所有”视图

Editing or Replacing the All View

默认 “All” 视图为 All 类型(在创建时可以选择),而 All 类型的视图是不可以编辑,并且只能创建一个。

没有隐藏,只能删除:
1)修改默认视图:”Manage Jenkins” => “Configure System” => “Default View”
2)在修改默认视图后,可以删除原有的 “所有” 视图。

清理旧的构建

Best Strategy for Disk Space Management: Clean Up Old Builds

先升级 Jenkins 再升级插件

在插件升级前,建议先进行 Jenkins 版本升级,某些插件依赖于新版本的 Jenkins 服务,大批量的插件升级将导致 Jenkins 重启失败。

补充说明

针对 Pipeline 编程:
1)该笔记包含 Pipeline 插件的使用方法,例如,如何在 Pipeline 中使用某个插件;
2)但是 Jenkins Pipeline 本身语法编程并未包含在此(参考 Jenkins Pipeline 笔记,获取相关内容)

安装插件

在 Jenkins 与 Jenkins Pipeline 中,我们用到的的插件,及特定问题的解决方法。

使用国内镜像站点

jenkins插件清华大学镜像地址 国内

默认 Jenkins 使用 https://updates.jenkins.io/update-center.json 下载并安装扩展,但是速度较慢。

我们可以修改为使用国内镜像站点,比如清华大学镜像站点:
1)Manage Jenkins / Manage Plugins / Advanced
2)Update Site / URL https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
3)Submit

卸载插件

uninstallation pending message
提示 Uninstallation pending 消息,表示需要重启 Jenkins 服务才能完成卸载操作。

禁用插件

Disabling plugins from CloudBees CI

通过手动进行禁用:
1)进入 /var/lib/jenkins/plugins 目录
2)创建 <PLUGIN_ID>.jpi.disabled 文件,以禁用插件;
3)例如:greenballs.jpi.disabled 来禁用 greenballs.jpi 插件;

或,通过 Jenkins CLI 禁用(我们仅记录,但未验证):
1)java -jar jenkins-cli.jar disable-plugin plugin1 plugin2

辅助插件

这里是日常工作中用到的一些插件。

Jenkins Simple Theme Plugin

https://plugins.jenkins.io/simple-theme-plugin/
Simple Theme Plugin causes Jenkins to hang on Configure screen in “LOADING” state

该插件用于更换 Jenkins 主题(默认主题也还可以,换不换看个人喜好)。在安装插件后,在 Manage Jenkins => Configure System => Theme 中添加主题文件 CSS 的路径。推荐 jenkins-material-themeJenkins Neo2 Theme 主题,使用方法可以参考官方文档。

注意事项,如果静态 CSS 文件无法加载或者加载缓慢,可能会影响页面的渲染(即页面加载慢)。

Build-timeout Plugin

构建超时后,丢弃放弃作业
https://plugins.jenkins.io/build-timeout

该插件不能在 Jenkins Pipeline 中使用,在 Pipeline 中应该使用 timeout 步骤。

Description Column

更加高级的描述列
https://plugins.jenkins.io/description-column-plugin

可以在View中,显示更多的描述信息,并且支持显示换行。

# 网络插件

# Publish Over FTP

– 使用FTP上传制品
https://jenkins.io/doc/pipeline/steps/publish-over-ftp/
https://wiki.jenkins.io/display/JENKINS/Publish+Over+FTP+Plugin

ftpPublisher: Send build artifacts over FTP
using Jenkins2 pipeline to upload via FTP

# HTTP Request

– 发送HTTP请求
https://plugins.jenkins.io/http_request
https://jenkins.io/doc/pipeline/steps/http_request/

-「Basic Auth with Jenkins http-request-plugin

# 构建插件

# Parameterized Build

– 参数化构建,自定义参数

# Dynamic Parameter Plug-in

– 动态生成构建参数
https://wiki.jenkins.io/display/JENKINS/Dynamic+Parameter+Plug-in

# Extended Choice Parameter plugin

– 更加复杂的自定义参数
https://wiki.jenkins.io/display/JENKINS/Extended+Choice+Parameter+plugin

基础插件

这里的“基础插件”是指必须安装的插件,或者说及其有用的插件,可能这些插件已经默认安装。

Pipeline Plugin

插件功能: – 这是Pipeline的基础插件,要使用Pipeline功能,需要安装该插件,可让你可以协调简单或复杂的自动化。
插件地址: https://plugins.jenkins.io/workflow-aggregator
步骤手册: https://jenkins.io/doc/book/pipeline/
其他链接: https://github.com/jenkinsci/pipeline-plugin

Pipeline Utility Steps

插件功能: – 提供了一系列Pipeline扩展步骤。比如YAML文件处理
插件地址: https://plugins.jenkins.io/pipeline-utility-steps
步骤手册: https://jenkins.io/doc/pipeline/steps/pipeline-utility-steps
其他链接: https://github.com/jenkinsci/pipeline-plugin

File Operations Plugin

插件功能: – 文件、目录操作插件,包括复制、移动、删除等等动作
插件地址: https://plugins.jenkins.io/file-operations
步骤手册: https://jenkins.io/doc/pipeline/steps/file-operations/
其他链接: https://github.com/jenkinsci/file-operations-plugin

Pipeline: Groovy

– 基于Groovy脚本的CPS转换的Pipeline执行引擎
https://wiki.jenkins.io/display/JENKINS/Pipeline+Groovy+Plugin
https://github.com/jenkinsci/workflow-cps-plugin

TODO Groovy CPS
https://github.com/cloudbees/groovy-cps

Pipeline: Shared Groovy Libraries

https://plugins.jenkins.io/workflow-cps-global-lib
是Pipeline Plugin的一个组件。提供了使用共享库来扩展Pipeline脚本的功能。

功能插件

这里的“功能插件”是泛指实现某些功能的插件,与特定的场景有关。

SSH Pipeline Steps

插件功能: – 在Pipeline中,使用SSH命令来执行某些远程操作
插件地址: https://plugins.jenkins.io/ssh-steps
步骤手册: https://jenkins.io/doc/pipeline/steps/ssh-steps/
其他链接: SSH Steps for Jenkins Pipeline: https://jenkins.io/blog/2019/02/06/ssh-steps-for-jenkins-pipeline/

Last Changes

插件功能: – 输出此次构建变更的内容
插件地址: https://plugins.jenkins.io/last-changes
步骤手册: https://jenkins.io/doc/pipeline/steps/last-changes/
其他链接: https://github.com/jenkinsci/last-changes-plugin

Jabber (XMPP) notifier and control

插件功能: – 提供对XMPP通知的支持。!!!目前还不支持PIPELINE中使用,出于WIP状态。
插件地址: https://plugins.jenkins.io/jabber
步骤手册:  
其他链接: https://github.com/jenkinsci/jabber-plugin
  https://issues.jenkins-ci.org/browse/JENKINS-36826

其他内容

在脚本式 PIPELINE 中替代 POST 步骤

post equivalent in scripted pipeline?
使用try...cache...finally语句,可以捕获异常,模拟POST步骤。

转义引号的问题

Jenkinsfile idiosynchrasies with escaping and quotes

相关链接

Pipeline Syntax reference
Pipeline Steps reference

Private Jenkins Shared Libraries
How-To Use third party libraries in Jenkins Pipeline

Best Practices for Scalable Pipeline Code
Pipeline Steps Reference

Jenkins CPS

What’s meaning of CPS in jenkins. what’s the full name of CPS?
GitHub/cloudbees/groovy-cps
Basics of Continuation Passing Style

参考文献

Jenkins Plugins
Jenkins / Pipeline