Jenkins Pipelines+Docker執行RobotFramework自動化測試

瘋狂的機器人發表於2021-02-03

一、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

 

相關文章