首页 > 解决方案 > 在詹金斯管道中使用配置文件

问题描述

我有一个 Jenkins 管道作业,它是参数化的。它将接受一个字符串输入并将其传递给一个 bat 脚本。

输入:https ://jazz-test3.com/web/projects/ABC

我想包含一个配置文件,它应该放在一个位置(可能在本地的 Jenkins 机器中,或者最好的选择是什么?)。

示例配置文件:server_config.txt

收到用户输入后,作业应访问此文件并检查输入链接中的服务器是否存在于配置文件中。 如果存在则调用 bat 脚本,如果不存在则抛出错误,服务器不受支持。

预期结果:

实现这一目标的最佳方法是什么? 我们可以直接从管道中执行此操作,还是需要单独的脚本来执行此操作?
感谢您的帮助!!

标签: batch-filejenkinsgroovyjenkins-pipelinejenkins-groovy

解决方案


Jenkins 支持通过config-file-provider插件存储在控制器上的配置文件。请参阅管理 Jenkins | Managed Files用于托管配置文件的集合。

您可以添加一个 ID 为“test-servers”的 JSON 配置文件,用于存储您的测试服务器配置:

{
  "test1":"https://jazz-test-1.com",
  "test2":"https://jazz-test-1.com"
} 

然后作业管道将执行以下操作:

servers = [:]

stage("Setup") {
  steps {
    configFileProvider([fileId:'test-servers', variable:'test_servers_json']) {
      script {
        // Read the json data from the file.
        echo "Loading configured servers from file '${test_servers_json}' ..." 
        servers = readJSON(file:test_servers_json)
      } 
    }
  }
}
stage('Test') {
  steps {
    script {
      // Check if 'server' is supported.
      if (!servers.containsKey(params.server)) {
        error "Unsupported server"
      }
      build job:'...', parameters:[...]
    }
  }
} 

推荐阅读