如何测试是否在Pipeline DSL(Groovy)中安装了Jenkins插件

Mic*_*ihs 6 groovy jenkins jenkins-plugins jenkins-pipeline

我想对我的Jenkins管道进行飞行前检查,以测试是否安装了某个插件.我发现这篇文章检查一个插件存在于Jenkins管道(Groovy)中,它提出了同样的问题,但提供的答案对我来说不可用,因为他们测试插件提供的DSL方法是否可用,是否插件一般是否可用.

我想拥有的是这样的(在我看来Jenkinsfile):

pluginAvailable('plugin-name', '0.0.1')
Run Code Online (Sandbox Code Playgroud)

其中0.0.1可能是(可选)最低版本.

在Pipeline DSL或其他Jenkins课程中有类似的东西吗?

Sea*_*ean 5

有一段时间有同样的想法,并组合了一个助手,只是清理它并将示例实现发布到 github。

@Library('shared-utilities@development') _

pluginDependencies = [
  'pipeline-utility-steps': '',       // installed at any version
  'scm-api': '2.6.3',                 // installed and at version 2.6.3
  'build-timestamp':'^1.0.3',         // installed and at version 1.*
  'warnings':'~5.0.0',                // installed and at version 5.0.*
  'config-file-provider': '>3.6.1',   // installed and greater than 3.6.1
  'pipeline-utility-steps': '>=2.3.0',// installed and greater than or eq
  'workflow-basic-steps': '<2.20',    // installed and less than 2.20
  'maven-plugin': '<=3.4'             // installed and less than or eq 3.4
  ]

assertPluginsInstalled( requiredPlugins: pluginDependencies )

pipeline{
    agent any

    stages{
        stage( 'one' ){
            steps{
                sh "echo 'Running stage after making sure required plugins are installed'"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该功能的自述文件 https://github.com/Perficient-DevOps/jenkins-shared-library/blob/master/vars/assertPluginsInstalled.md

来源 https://github.com/Perficient-DevOps/jenkins-shared-library/blob/master/vars/assertPluginsInstalled.groovy


小智 4

在这里查看第二个答案 -如何获取已安装的詹金斯插件的名称和版本对的列表?

  1. 创建一个用于解析的groovy脚本(感谢malenkiy_scot)将以下内容保存为plugins.groovy:

def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins() plugins.each {println "${it.getShortName()}: ${it.getVersion()}"}

创建一个接受插件名称和版本的函数,并通过上面的代码片段迭代生成的文件。