用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

时间: 2024-11-05 11:23:38

用Jenkins Pipeline实现网元日志和配置的导出的相关文章

Docker的Jenkins Pipeline工作流

原文地址:http://www.youruncloud.com/blog/127.html 分享主题 一个软件产品的开发周期中,尤其是敏捷开发,持续集成和持续部署是必不可少的环节,而随着产品的丰富,模块的增多.随即带来了更加多的问题,各模块间编译环境的准备,编译复杂,耗时增加,还需要专人去负责这个流程.而Jenkins则可以很好的解决这个单一而容易出错的CI(持续集成)工作. Jenkins也存在着编译环境不隔离的问题,虽然可以通过集群的方式解决,可是需要为每种环境甚至是一种语言的不同版本准备多

基于Jenkins Pipeline的ASP.NET Core持续集成实践

原文:基于Jenkins Pipeline的ASP.NET Core持续集成实践 最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署,因此这里总结一下. 一.关于持续集成与Jenkins Pipeline 1.1 持续集成相关概念 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI) . 持续集成指的是,频繁地 (一天多次) 将代码集成到

jfrog artifactory jenkins pipeline 集成

1. 预备环境 artifactory ( 开源版本 ) maven jenkins jenkins artifactory plugin (在插件管理安装即可) 2. 配置artifactory a. maven local 仓库 b. jenkins 配置(添加 artifactory 账户信息) 3.  jenkins  pipeline 配置(实例使用github 实例) jenkinsfile 内容如下: node("docker-64") { def server = Ar

Jenkins pipeline:pipeline 使用之语法详解

一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中的相关配置信息,如SVN/Git的配置,Parameter的配置等都变成Code,即Pipeline as Code. 随着pipeline交付流水线在团队中的推广,使用pipeline脚本的job也迅速增加. 优势: 通过写代码的形式配置Project,且Jenkins中内置了常用的steps.

Jenkins pipeline shared library

Jenkinsfile https://jenkins.io/doc/book/pipeline/jenkinsfile/ Jenkins Pipeline is a suite of plugins that supports implementing and integrating continuous delivery pipelines into Jenkins. Pipeline provides an extensible set of tools for modeling simp

Jenkins Pipeline+Docker实现流水线自动化构建(上百个项目共用一个脚本方案)

Jenkins Pipeline是一套插件,支持将连续输送Pipeline实施和整合到Jenkins.Pipeline提供了一组可扩展的工具,用于通过PipelineDSL为代码创建简单到复杂的传送Pipeline. 对于单个项目来说,使用这样的Pipeline来构建能够满足绝大部分需求,但是这样做也有很多缺陷,包括: 多个项目的Pipeline打包脚本不能公用,导致一个项目写一份脚本,维护比较麻烦.Jenkins提供了一个更优雅的管理Pipeline脚本的方式,在配置项目Pipeline的时候

Jenkins pipeline自动化构建审批功能

Jenkins Pipeline是一套插件,支持将连续输送Pipeline实施和整合到Jenkins.Pipeline提供了一组可扩展的工具,用于通过PipelineDSL为代码创建简单到复杂的传送Pipeline. 对于单个项目来说,使用这样的Pipeline来构建能够满足绝大部分需求,但是这样做也有很多缺陷,包括: 多个项目的Pipeline打包脚本不能公用,导致一个项目写一份脚本,维护比较麻烦.Jenkins提供了一个更优雅的管理Pipeline脚本的方式,在配置项目Pipeline的时候

Jenkins pipeline 语法详解

原文地址http://www.cnblogs.com/fengjian2016/p/8227532.html pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. pipeline 是jenkins2.X 最核心的特性, 帮助jenkins 实现从CI 到 CD与 DevOps的转变 pipeline 提供一组可扩展的工具, 通过 pipeline domain specific language

Jenkins Pipeline 参数详解

Pipeline 是什么 Jenkins Pipeline 实际上是基于 Groovy 实现的 CI/CD 领域特定语言(DSL),主要分为两类,一类叫做 Declarative Pipeline,一类叫做 Scripted Pipeline. Declarative Pipeline 体验上更接近于我们熟知的 travis CI 的 travis.yml,通过声明自己要做的事情来规范流程,形如: pipeline { agent any stages { stage('Build') { st