Jenkins流水線構建python單元測試


jenkins2.0后推出pipeline流水線式構建,支持構建任務腳本化。Pipeline,簡單來說,就是一套運行在 Jenkins 上的工作流框架,將原來獨立運行於單個或者多個節點的任務連接起來,實現單個任務難以完成的復雜流程編排和可視化的工作。
本文主要旨在使用jenkins 的pipeline功能對python項目進行單元測試。
1、jenkins首頁新建任務-》輸入任務名稱,選擇流水線

 

 2.設置構建觸發器:也就是什么時候執行構建

 

 3.創建流水線代碼;這里面有兩個選項,一個是Pipeline script,一個是Pipeline script from SCM

 

 Pipeline script:就是直接在這里寫流水線代碼,如下圖,點擊右側藍色的幫助按鈕,會有相關代碼例子

下面是我寫的python項目的單元測試的流水線代碼:

//Jenkinsfile (Declarative Pipeline)
pipeline{
 agent any    //指定執行job的節點,any為不做限制
    // 定義環境變量
 environment {
MY_PYTHON='/root/anaconda3/envs/drr/bin'
SOURCE_DIR='/var/lib/jenkins/workspace/Screw/python_tests/segmentation_part' } //默認命令運行的pwd為項目workspace stages {
stage('Checkout') {
steps {
echo "checkout"
checkout([$class: 'GitSCM', branches: [[name: '*/develop']], extensions: [], userRemoteConfigs: [[credentialsId: 'HWY', url: 'git@gitee.com:mvisioner/screws.git']]])
}
} stage('Build') { steps{ echo '‘Building’ sh 'sudo ${MY_PYTHON}/python --version'
}
}

        // stage可以添加或減少
        stage('Test') {
steps{
echo 'Testing'
sh '''
sudo /bin/bash -c 'source /root/anaconda3/bin/activate drr'
cd ${
SOURCE_DIR}
sudo
${MY_PYTHON}/python -m pytest --cov --cov-report=html:./${JOB_NAME}_${BUILD_NUMBER} --junit-xml=./${JOB_NAME}_${BUILD_NUMBER}/results.xml --html=./${JOB_NAME}_${BUILD_NUMBER}/results.html --verbose --capture=tee-sys ${SOURCE_DIR}
'''
}
}
        stage('Deploy') {
            steps{
                echo 'This is a deploy step'
            }
        }
}
post {
failure{
script{
emailext attachLog: true,
// 郵件模板這里的引號一定要注意寫對(坑)
body: '''${SCRIPT, template="groovy-html.template"}''',
mimeType: 'text/html',
charset:'UTF-8',
// PlatformGroup #10 構建失敗
subject: "${currentBuild.fullDisplayName} 構建失敗",
//用逗號或空格分隔多個郵箱
to: 'xxx@xx.com xxxx@xxx.com'
}
}
}
}

 

Pipeline script from SCM:就是將Pipeline script寫在一個文本文件(也叫Jenkinsfile)里面,將Jenkinsfile文件放到源代碼的控制庫,Jenkins構建任務時,拉取該代碼倉庫到本地,然后讀取Jenkinsfile的內容,執行相關的步驟。

 

 

注意:在使用pipeline script from SCM方式下載Jenkinsfile時,Jenkins會自動清理掉工作空間,如果不想讓Jenkins自動清理掉workspace,在Jenkins任務設置里面指定一個路徑去下載Jenkinsfile,而不是讓Jenkinsfile直接下載到workspace下面


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM