Jenkins 管道:如何读取包含部分的 ini 文件

Jenkins pipeline: How to read an ini file with sections

有人可以指点我阅读带有部分的 ini 文件中的值的任何参考。这是ini文件的示例

example.ini

[ section1 ]
   [[ section 1a ]]
      key=value1
   [[ section 2a ]]
      key=value2
[ section 2 ]
   [[ section 1a ]]
      key=value1
   [[ section 2a ]]
      key=value2

希望有以下内容:

x = readFile "example.ini"
print x.section1."section 1a".key

一个选项是将 ini 转换为 json/properties - 然后阅读 - 任何指向此类免费软件转换实用程序 (windows/ubuntu) 的指针也可能有效。

不幸的是,由于这个原因,您必须编写自己的解析器,虽然完成它并不是那么困难的任务,但它就是这样。

并导致在管道中您可以使用 groovy 并创建方法,这将很容易实现

使用从管道调用的 configobj 编写了一个简单的 python 脚本,在此处发布示例:

from configobj import ConfigObj

def convertIni2Properties(conf, sectionPrefix=''):
    if not conf.sections:
        for scalar in conf.scalars:
            print "%s.%s = %s\n" % (sectionPrefix, scalar, conf[('%s' % scalar)]))
    for section in conf.sections:
        convertIni2Properties(conf['%s' % section], '%s.%s' % (sectionPrefix, section))

conf = ConfigObj('myfile.ini')
convertIni2Properties(conf)

我的 ini 文件有几百行并且使用递归调用有效,没有费心将其更改为迭代。