• Jenkins Pipelines+Docker执行RobotFramework自动化测试


    一、Jenkins Pipelines介绍

    Pipeline,简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。

    Pipeline是Jenkins2.X的最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变

    Pipeline是一组插件,让Jenkins可以实现持续交付管道的落地和实施。

    持续交付管道(CD Pipeline)是将软件从版本控制阶段到交付给用户或客户的完整过程的自动化表现。软件的每一次更改(提交到源代码管理系统)都要经过一个复杂的过程才能被发布。

    Pipeline提供了一组可扩展的工具,通过Pipeline Domain Specific Language(DSL)syntax可以达到Pipeline as Code(Jenkinsfile存储在项目的源代码库)的目的。

    二、Jenkins Pipelines语法

    1.常用关键字

    关键字 描述
    pipeline 声明式的pipeline脚本
    agent 执行任务的代理,执行节点,如:any,none, label, node,docker,dockerfile
    stages 阶段集合,包裹所有的阶段(例如:打包,部署等各个阶段)
    stage 阶段,被stages包裹,一个stages可以有多个stage,例如:“Build”,“Test”,“Deploy”。
    steps 步骤,为每个阶段的最小执行单元,被stage包裹
    post 执行构建后的操作,根据构建结果来执行对应的操作,如:always、changed、failure、success、unstable、aborted
    environment 声明一个全局变量或者步骤内部的局部变量,如:environment { P1="parameters 1" }
    options

    提供给脚本更多的选项。

    buildDiscarder:指定build history与console的保存数量
    用法:options { buildDiscarder(logRotator(numToKeepStr: '1')) }
    disableConcurrentBuilds:设置job不能够同时运行
    用法:options { disableConcurrentBuilds() }
    skipDefaultCheckout:跳过默认设置的代码check out
    用法:options { skipDefaultCheckout() }
    skipStagesAfterUnstable:一旦构建状态变得UNSTABLE,跳过该阶段
    用法:options { skipStagesAfterUnstable() }
    checkoutToSubdirectory:在工作空间的子目录进行check out
    用法:options { checkoutToSubdirectory('children_path') }
    timeout:设置jenkins运行的超时时间,超过超时时间,job会自动被终止
    用法:options { timeout(time: 1, unit: 'MINUTES') }
    retry :设置retry作用域范围的重试次数
    用法:options { retry(3) }
    timestamps:为控制台输出增加时间戳
    用法:options { timestamps() }

     parameters  提供pipeline运行的参数,如:parameters { string(name: 'P1', defaultValue: 'it is p1', description: 'it is p1') booleanParam(name: 'P2', defaultValue: true, description: 'it is p2') }
     triggers  触发器是自动化运行pipeline的方法,例如cron,pollSCM,或者upstream
     tools  用于引用配置好的工具,

    tools {
    maven 'apache-maven-3.0.1'
    }

     input  暂停pipeline,提示输入内容

     

    三、创建一个Jenkins Pipelines

    1.新建pipelines

    Jenkins首页->新建任务->输入一个任务名->选择流水线->点击确认

    2.配置General、构建触发器

    这两部分的配置请参照之前的一篇文章,本章主要是讲解pipelines,所以不在重复描述,链接如下:

     https://www.cnblogs.com/airb/p/13229354.html

    3.配置pipelines

    pipelines脚本:

    pipeline {
        agent any
        environment{
            MAVEN_HOME = "/var/lib/jenkins/workspace/ADCS_API_QAT_BVT"    //主目录 
            dockerfile_path = '/var/lib/jenkins/workspace/ADCS_API_QAT_BVT/环境搭建/Dockerfile'   //Dockerfile文件目录 
        }
        stages {
            stage('Checkout') {
                steps {
                    echo 'Git拉取代码'
                    git credentialsId: 'Git密码', url: 'Git地址'
                }
            }
            stage('Docker') {
                steps {
                    echo 'Docker环境构建'
                    sh 'docker build -t python:3.7.9 -f ${dockerfile_path} .'    //构建Docker环境
                }
            }
            stage('Test') {
                steps {
                    echo '执行测试用例'
                    sh 'docker run -i -v ${MAVEN_HOME}:/mnt python:3.7.9 robot --include BVT -d ${MAVEN_HOME}/report AGGS_API'
                }
            }
        }
        post { 
            always { 
                echo '清空文件'
                deleteDir()         //清空所有文件
            }
        }
    }

    4.阶段视图

    任务配置完成后点击立即构建,可查看pipelines阶段视图

    5.查看Pipelines运行日志

    构建完成后->点击左下角Console Output

    —————————————————————————————— 选择正确的事、再把事做正确 ——————————————————————————————
  • 相关阅读:
    PowerDesigner将PDM导出生成WORD文档
    wrong number of arguments,java方法反射时数组参数的坑
    页面关键词Meta Keywords和描述Description的优化作用
    Java RMI之HelloWorld篇
    WebService另一种轻量级实现—Hessian 学习笔记
    RMI、Hessian、Burlap、Httpinvoker、WebService的比较
    利用Hessian如何实现Webservice
    什么是反射?反射有什么用处
    java string,需要进行首字母大写改写
    解决版本冲突-使用SVN主干与分支功能
  • 原文地址:https://www.cnblogs.com/airb/p/14362990.html
Copyright © 2020-2023  润新知