简要说明一下公司的环境:公司服务器是阿里云,所有的环境都是容器,Jenkins是一个Docker镜像,我们的接口自动化依赖Python3环境,但是Jenkins环境没有python,运维新制作了一个python的Docker镜像给我们跑自动化脚本。
因此我们的逻辑是:(1)Jenkins从Git上拉取代码;(2)将代码拷贝到Python环境上运行;(3)运行完成后将测试报告拷贝回Jenkins主机用于展示;(4)测试结果使用钉钉通知,代码写在sendmsg.py文件中;
使用Pipeline,脚本如下:
import hudson.model.*;
pipeline {
agent any
stages{
stage('Checkout'){
steps{
echo 'Checkout XXX_api testcases'
git branch: 'master', credentialsId: 'XXXXXXXXXXXXXXXXXXXX', url: 'http://gitlab.com/XXXXX/XXX_api.git'
script{
def commitSha = sh(returnStdout: true, script: 'git rev-parse HEAD').trim()
println("commitSha: ${commitSha}")
}
}
}
stage('Running'){
steps{
echo 'XXX_api autotest is running'
sh "scp -P 12222 -rp /var/jenkins_home/workspace/mmm_XXX_api_prd root@10.10.10.10:/tmp/test/"
sh "ssh -o 'StrictHostKeyChecking no' -p 12222 root@10.10.10.10 'source ~/.bash_profile && rm -rf /tmp/test/mmm_XXX_api_prd/reports/*.html && cd /tmp/test/mmm_XXX_api_prd && hrun testsuites/XXX_testsuites_pro.yml --dot-env-path .env.prod --save-tests' || true"
sh "ssh -o 'StrictHostKeyChecking no' -p 12222 root@10.10.10.10 'source ~/.bash_profile && cd /tmp/test/mmm_XXX_api_prd && python3 sendmsg.py'"
sh "rm -rf /var/jenkins_home/workspace/mmm_XXX_api_prd/reports/*.html"
sh "scp -P 12222 -rp root@10.10.10.10:/tmp/test/mmm_XXX_api_prd/reports/. /var/jenkins_home/workspace/mmm_XXX_api_prd/reports/"
script {
filename = sh (
script: "cd /var/jenkins_home/workspace/mmm_opp_api_prd/reports/;ls -t | head -1",
returnStdout: true
).trim()
println("filename: ${filename}")
}
}
}
stage('Finish'){
steps{
echo 'XXX_api autotest finish'
sleep 5
sh 'exit 0'
}
}
}
post{
success {
echo 'pipeline success'
publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false, reportDir: 'reports', reportFiles: filename, reportName: 'HTML Report', reportTitles: ''])
}
failure {
echo 'ops!!! pipeline failed....'
publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false, reportDir: 'reports', reportFiles: filename, reportName: 'HTML Report', reportTitles: ''])
}
}
}












网友评论