用Jenkins Pipeline实现网元日志和配置的导出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Jenkins Pipeline实现网元日志和配置的导出相关的知识,希望对你有一定的参考价值。

整体架构:

Jenkins > PC1 > RobotFramework > NEs_1

             > PC2 > RobotFramework > NEs_2

             > PC3 > RobotFramework > NEs_3

             ....

通过Jenkins控制多台PC,再借助RobotFramework框架实现对网元的自动化测试,使用SSHLibrary等库。

 

Jenkins Pipeline中的代码:

node(pc) {
stage(‘Export_Log_and_Config‘) {
if (test_env == ‘data1‘) {
var_file = ‘C:\\\\NPTI_CLI\\\\Case\\\\Sanity\\\\topo_var_data1.py‘
} else if(test_env == ‘data2‘) {
var_file = ‘C:\\\\NPTI_CLI\\\\Case\\\\Sanity\\\\topo_var_data2.py‘
} else if(test_env == ‘system‘) {
var_file = ‘C:\\\\NPTI_CLI\\\\Case\\\\Sanity\\\\topo_var_system.py‘
} else {
var_file = ‘C:\\\\NPTI_CLI\\\\Case\\\\Sanity\\\\topo_var_data1.py‘
}
bat "robot --variablefile ${var_file} --variable pause_on_fail:false --variable log_flag:${log_flag} --outputdir C:\\\\NPTI_CLI\\\\report --debugfile debug.txt --loglevel DEBUG:INFO C:\\\\NPTI_CLI\\\\Case\\\\tools"
}
}

通过Jenkins Pipeline自带的 bat 命令,实现在windows系统中下发robot命令,启动robotframework。

为了方便配置,其参数有:pc test_env log_flag

参数化构建完成后,其Jenkins界面如下所示:

技术分享

运行结果显示界面:

技术分享

 

在实现过程中,遇到的坑:

1,导出日志的名字,需要包含网元的版本信息,而我们原有的函数cli_export_version,只是将获取的版本信息保存到新建文件中。因此需要根据函数参数,来确定是新建文件,还是单纯的返回版本信息。但我不知道呐,暴露了对python函数参数理解的不到位。

2,为了实现Jenkins Pipeline根据参数,选择不同的PC来执行robotframewok,饶了很大的弯,惊觉node(‘PC1‘) {xxxxx},即为选择PC1来执行该命令,如果node(para) {xxxxxx},即为选择para变量所包含的值来执行该命令。

 

关于python函数参数,简单总结一下:

python函数参数分为以下几类:

1、普通参数

def func1(par1, para2, para3):
    function body

调用函数时,需要将参数按顺序写入。

2、关键字参数

关键字函数在创建函数时和普通参数一样的,只是在调用时有差别。

func(para2=x,para3=y,para1=z)

即可以打乱参数传入的顺序,但是必须指定参数名。

3、缺省参数

def func1(para1,para2="x",para3="o")
    function body

因为参数有初始化值,故在函数调用时,可以将被初始化的参数忽略,只使用未初始化的值。

4、多选项参数

def func2(para1, *para2):
    print para1
    for i in para2:
        print i


func2(10)
输出10

func2(10, 20, 30)
输出10,20,30

如代码所示,在参数前加入*号,既能实现对该参数,输入0个或多个。

 

insist

 

以上是关于用Jenkins Pipeline实现网元日志和配置的导出的主要内容,如果未能解决你的问题,请参考以下文章

jenkins 用Pipeline实现控制stage任务进行精确构建发布

jenkins的日志在啥地方

jenkins 2:用ssh agent插件在pipeline里实现scp和远程执行命令

Jenkins Pipeline sh 显示名称/标签

如何在 Jenkins Pipeline 中对 SonarQube 质量门做出反应

在k8s+jenkins+github+dockerhub环境中用pipeline部署应用