美文网首页
记录Jenkins的Pipeline的学习成果

记录Jenkins的Pipeline的学习成果

作者: 安静的冰棒 | 来源:发表于2020-08-31 14:04 被阅读0次

        简要说明一下公司的环境:公司服务器是阿里云,所有的环境都是容器,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: ''])

          }

    }

}

相关文章

网友评论

      本文标题:记录Jenkins的Pipeline的学习成果

      本文链接:https://www.haomeiwen.com/subject/bdmusktx.html