【Jenkins自动化】不依赖Jenkins插件读取配置文件

本文介绍了如何在Jenkins的低版本中通过Python脚本读取config.ini配置文件,并在高版本中利用PipelineUtilitySteps插件。还详细描述了如何在不同版本构建中使用config.ini和初始化脚本来设置流水线参数。
摘要由CSDN通过智能技术生成

一、判断Jenkins版本

可以在Jenkins的Dashboard的Manage Jenkins按钮下,最下端查看:

如此处,我的Jenkins版本为2.263.2,在更高版本(如2.361.4),可以使用Pipeline Utility Steps插件去调用一些方法读取ini配置文件:

而低版本的Jenkins则需要使用一些“曲线救国“的方式来实现。这里我的思路是python脚本读取config.ini文件存入Jenkins脚本的字典中,并在后续流水线中调用。

二、准备config.ini配置文件

项目中,构建的Job完善以后,很多时候需要构建不同的版本,而此时流水线框架可通用,但版本与版本所需的参数不一定相同,所以此时可以根据自己的需求,准备config.ini文件。格式按照节-键值对来配置:

;这是A的配置
[A]
key1=value1
key2=value2

;这是B的配置
[B]
key1=value1
key2=value2

;这是C的配置
[C]
key1=value1
key2=value2

三、Python脚本读取本地config.ini文件

由于上文所述,我的Jenkins的版本较低,无法在Jenkins流水线构建中直接读取配置文件,所以这里我使用了python编写了一个脚本去读取本地的ini文件,并以json格式输出:

这里注意,Configparser()方法输出会把所有的键替换为小写,建议配置文件统一使用小写

import configparser
import sys
import json

def get_config(Version, config_file):
    config = configparser.ConfigParser()
    config.read(config_file, encoding='utf-8')
    Version = dict(config[Version])
    #后续参数更新直接添加
    print(json.dumps({
        'key1': Version.get('key1'), 
        'key2': Version.get('key2')
    }))

if __name__ == '__main__':
    Version = sys.argv[1]
    config_file = sys.argv[2]
    get_config(Version, config_file)

其中第一个Version参数为节A、B和C的代称;如我需要每次构建选择不同的版本构建,那么A、B、C则为不同的版本(可以在Jenkins的Job中添加参数对应)。下面的json输出包括配置文件中所有的键(如果某个键对应的值为空,这里会输出none,需要根据具体情况处理)。第二个config_file参数为本地config.ini文件的路径,依赖后续流水线脚本传入。

四、准备Jenkins初始化脚本

在Jenkins中,可以使用数组+字典的组合来存放每一次读取的字符串值,在后续流水线中,可以直接使用powershell读取字典中的值:

// 数组存放参数(支持后期拓展)
def conf_params = [
    'key1',
    'key2'
]
// 定义一个字典存放数组元素
def conf_param = [:]

env.work_dir = 'D:\\Script'

stage('Initializing'){
// 初始化构建版本所需参数
    conf_params.each{item ->
        conf_param[item] = powershell(script: "(python ${env.work_dir}\\Get_Config.py ${params.Version} ${env.work_dir}\\config.ini | ConvertFrom-Json).${item}", returnStdout: true).trim()
  }
}

stage('Build'){
    echo "${conf_param['key1']}"
    echo "${conf_param['key2']}"
    // 构建步骤
}

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值