【问题标题】:How can I use Jenkins' ExportParametersBuilder in a Pipeline?如何在管道中使用 Jenkins 的 ExportParametersBuilder?
【发布时间】:2019-11-27 22:05:01
【问题描述】:

我正在将 Free Style 作业迁移到 Jenkins 上的流水线。 Freestyle Job 使用ExportParametersBuilder(将参数导出到文件)插件。这对我们的工作流程很重要,因为应用程序需要将参数作为 JSON 文件。

我已尝试使用基本步骤,如 Pipeline: Basic Steps - Jenkins documentation 中所述(搜索 ExportParametersBuilder):

step([
    $class: 'ExportParametersBuilder',
    filePath: 'config/parameters',
    fileFormat: 'json',
    keyPattern: '',
    useRegexp: 'false'
])

但是当我尝试运行管道时,我收到以下错误:

没有已知接口 jenkins.tasks.SimpleBuildStep 的实现被命名为 ExportParametersBuilder

流水线作业与 Freestyle 作业(当前正在运行)在同一个 Jenkins 实例上运行。因此,插件已安装并正常工作。我不确定为什么会这样。

有谁知道这个插件能不能用在 Pipeline Jobs 中?如果是这样,怎么办?我错过了什么?

如果不能使用,我很抱歉,Jenkins 的文档经常会产生误导。

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    我找不到使用插件的方法,但我找到了替代方法。我把它留在这里,以防它对其他人有用。

    // Import the JsonOutput class at the top of your Jenkinsfile
    import groovy.json.JsonOutput
    
    ...
    
    stage('Environment Setup') {
      steps {
        writeFile(file: 'config/parameters.json', text: JsonOutput.toJson(params))
      }
    }
    

    这可能不是最干净或最优雅的方式,但它确实有效。参数全部写入 JSON 文件,JsonOutput 类负责所有转义魔法等。

    请记住,JSON 文件的格式与 ExportParametersBuilder 创建的格式略有不同,因此您需要适应它:

    ExportParametersBuilder 格式:

    [
      ...
      {
        "key": "target_node",
        "value": "c3po"
      }
      ...
    ]
    

    Json输出格式:

    {
      ...
      "target_node": "c3po"
      ...
    }
    

    【讨论】:

      猜你喜欢
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 2020-08-06
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      相关资源
      最近更新 更多