Jenkins部署pipeline并发执行pytest自动化用例

概述

目前现有自动化用例数比较多了,在free style jenkins project中顺次执行,耗时1天左右,很明显,耗时太久,急需用例能够并发执行,从而实现节约时间。

本文介绍如何通过pipeline project,实现现有用例执行流程的改造,实现并发执行。

改造涉及内容

针对当前automation project,需要做如下内容调整:

  • (1) run.py中,提取出reboot client,生成pylint数据操作

  • (2) Jenkins节点中email-templates发送email内容groovy脚本调整

  • (3) 测试代码config目录下autotest.conf,含有多个,命名格式为autotest_ip.conf

  • (4) 测试代码jenkins目录下生成build properties文件,以及rsync脚本要做修改,主要是路径问题

说明:

第(1)点: 以前用例是顺次执行的,只需要执行一次,一旦调整成并发后,存在每个执行node均会执行一次的情况;

第(3)点: 每个执行用例的集群节点,需要mv autotest_ip.conf为autotest.conf

第(4)点: free style与pipeline的jenkins project,所需要的workspace与jobspace是不一样的

需要Jenkins安装的插件

Warnings,pipeline相关插件,具体安装本文忽略。

改造过程

流程示意图

Jenkins project配置

pipelint Jenkinsfile

新增了Jenlinsfile,具体内容示例参考如下:

shell

#!groovy

ip_list = IPS.split(',')
ips_size = ip_list.size()

def cluster1_ip = ip_list[0..2][1]
def cluster2_ip = ip_list[3..5][1]

def cluster_ip = "${cluster1_ip} ${cluster2_ip}"

pipeline {
    agent any

    options {
        timestamps()
        }

    stages {
        /* IP check */
        stage("IP Cheeck") {
                agent { label "master" }
                steps {
                    script {
                            sh """
                                if [[ ${ips_size} != 6 ]]; then
                                    echo "IPS is not enough, but give (${ips_size}) nodes to run case"
                                    exit 1
                                fi
                            """
                            }
                       }
            }

        /* Install VM by PVE */
        stage("Initialize") {
                agent { label "master" }
                steps {
                    script {
                            sh """
                            #!/bin/bash -xe
                            echo "Call batch_install_vs.py to install ISO."
                            sshpass -p 1 ssh -p 22 17.1.1.235 -l root \${BAT_INSTALL}
                            """
                        }
                }
            }

        /* Get code */
        stage("Checkout") {
                agent { label "master" }
                steps {
                    retry(2) {
                        timeout(activity: false, time: 60, unit: 'MINUTES') {
                            checkout([$class: 'GitSCM',
                                branches: [[name: GIT_BRANCH]],
                                browser: [$class: 'GitLab', repoUrl: GIT_WEB, version: '12.8'],
                                doGenerateSubmoduleConfigurations: false,
                                extensions: [
                                    [$class: 'CleanBeforeCheckout', deleteUntrackedNestedRepositories: true],
                                    [$class: 'SubmoduleOption', recursiveSubmodules: true],
                                    [$class: 'GitLFSPull'],
                                    [$class: 'PruneStaleBranch']
                                ],
                                submoduleCfg: [],
                        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值