【问题标题】:How to test whether a Jenkins Plugin is installed in Pipeline DSL (Groovy)如何测试是否在 Pipeline DSL (Groovy) 中安装了 Jenkins 插件
【发布时间】:2017-09-15 14:22:28
【问题描述】:

我想对我的 Jenkins 管道进行飞行前检查,以测试是否安装了某个插件。我发现这篇帖子Check a plugin exists within a Jenkins Pipeline (Groovy) 提出了同样的问题,但提供的答案对我来说不可用,因为它们测试插件提供的 DSL 方法是否可用,插件是否可用。

我想要的是这样的(在我的Jenkinsfile):

pluginAvailable('plugin-name', '0.0.1')

0.0.1 可能是(可选)最低版本。

Pipeline DSL 或其他 Jenkins 类中是否有类似的东西?

【问题讨论】:

    标签: jenkins groovy jenkins-plugins jenkins-pipeline


    【解决方案1】:

    在这里查看第二个答案 - How to get a list of installed jenkins plugins with name and version pair?

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

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

    创建一个接受插件名称和版本的函数,并通过上面的 sn-p 遍历生成的文件。

    【讨论】:

    • 将其放入我的 Jenkinsfile 导致 org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use staticMethod jenkins.model.Jenkins getInstance 失败
    • @vossad01- 您可以从 Manage Jenkins 批准该脚本。那里应该有一个脚本批准选项。
    • 对我来说很好 - 很抱歉这么长时间没有回复你......但今天我需要它并且...... TADAAA - 它工作了:)
    【解决方案2】:

    有一段时间有同样的想法,并组合了一个助手,只是将其清理并在 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'"
                }
            }
        }
    }
    

    函数的自述文件 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-25
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2017-02-24
      相关资源
      最近更新 更多