jinjiezhilu

jenkins-pipeline 自动部署后端的测试环境

liunx关于pipeline的概念以及语法都可以去https://www.w3cschool.cn/jenkins/jenkins-e7bo28ol.html浏览!

一、Liunx环境部署

二、jenkins环境搭建

三、jenkins环境准备:

    1.JDK、Git、Maven配置(环境变量)

      进入"系统管理",选择“Global Tool Configuration”,

      以JDK举例:别名:插件标识,给自己看的,方便识别;

                           JAVA_HOME:JDK的安装路径

 

 2.全局属性设置(系统环境变量)

    “系统管理”->"系统设置",“全局变量”:键值对列表,键:PATH(标识id);值:git、jdk等的执行路径

 

 3.邮箱设置

   进入“系统管理”,选择“系统设置”,

   (1)、找到"jenkins Location“;

                jenkins URL是默认的,可以不用修改,

                 系统管理员邮件地址:写发件人的邮箱

 

(2)、找到“邮件通知”

              SMTP服务器:遵循SMTP 协议的发送邮件服务器;SMTP是邮件传输协议;

              用户默认邮件后缀:接受邮件的用户的邮件后缀

              用户名:发件人的邮箱地址

              密码:发件人的邮箱密码

              通过发送测试邮件测试配置:点击测试按钮“Test configuration”,如果邮件配置正确的情况下,接受人就能够接受到一封测试邮件

4.全局凭证创建

  (1)jenkins服务器登录节点服务器的凭证创建,Credentials->System->Global credentials(unrestricted),选择"Add credentials"新增凭证

 

(2)创建jenkins服务器访问GitHub的凭证

 

5.linux节点创建

   选择“系统管理”里的“节点管理“,然后新建节点

 

四、构建pipeline项目 

   创建pipeline风格的项目,自动部署后端的测试环境,从部署代码、移动代码到目标目录、kill掉tomcat服务,重启tomcat服务,最后发送构建邮件等整个流程

pipeline{
    //参数
    parameters{
        string(name:\'Agent_47\',defaultValue:\'TEST_2\',description:\'目标节点服务器\')
        string(name:\'Node_GitUrl\',defaultValue:\'/home/Node_Git\',description:\'目标节点服务器的工作空间路径\')
        string(name:\'Pro_URL\',defaultValue:\'/home/pro\',description:\'目标节点服务器的项目部署环境路径\')
        string(name:\'Cred_ID\',defaultValue:\'3619798a-5cf2-4f0b-b9b1-4320faf7c4f7\',description:\'节点服务器和git服务器之间的凭证\')
        string(name:\'GitHub_Addr\',defaultValue:\'ssh://XXXX@git.wowocai.com:29418/SQA/Automation/XXX/CRM\',description:\'git仓库地址\')
        string(name:\'MAS\',defaultValue:\'master\',description:\'git仓库分支标识\')
        string(name:\'Pro_Name\',defaultValue:\'XXX_crm\',description:\'项目ID\')
        string(name:\'Tomcat_Start\',defaultValue:\'/usr/data/XXX_crm/bin/startup.sh\',description:\'项目的tomcat启动文件\')
        string(name:\'Build_Result\',defaultValue:\'构建失败,\n构建成功\',description:\'构建结果\')
        string(name:\'Email_Reception\',defaultValue:\'XXXXX@qq.com\',description:\'邮件接收人\')
    }
    //执行者||工作区间,执行路径:Node_GitUrl
    agent{
        node{
            label params.Agent_47
            customWorkspace params.Node_GitUrl
        }
    }
    //options{
        //整个项目的执行时间是0.1小时
      //  timeout(time:0.1,unit:\'HOURS\')
        //项目执行失败,重试3次,3次后再失败则宣告失败
    //    retry(3)
//    }
    
    //为每个阶段(stage)建设自己的执行者或者工作区间|节点
    stages{
        
        stage(\'参数初始化\'){
            steps{
                script{
                    def BUILD=params.Build_Result.split(",")
                    build_faild = BUILD[0]
                    build_success = BUILD[1]
                }
            }
        }
        stage(\'清除工作空间\'){
            
            //steps最小执行单元,cleanWs():清除工作空间
            steps{
                cleanWs()
            }
        }
        
        stage(\'代码获取\'){
           steps{
                git credentialsId:params.Cred_ID,
                url:params.GitHub_Addr, 
                branch:params.MAS
            }
        }
        
        stage(\'清楚FSDK项目的CRM所有文件\'){
            steps{
                sh "rm -rf ${params.Pro_URL}/${params.Pro_Name}*"
            }
        }
        
        stage(\'推送最近拉取的FSDK项目的CRM所有文件\'){
            steps{
                sh "mv ${params.Pro_Name} ${params.Pro_URL}"
            }
        }
        
        stage("环境部署"){
            steps{
                //判断fsdk_crm的进程是否存在,如果不存在则重新启动,如果存在则kill掉该进程,然后重新启动
                sh \'\'\'count=`ps -ef |grep fsdk_crm|grep -v "grep" |cut -c 9-15`
                      if [ $? -eq 0 ]
                      then
                           /usr/data/fsdk_crm/bin/startup.sh
                           sleep 30
                      else
                           `kill -9 $count`
                           /usr/data/fsdk_crm/bin/startup.sh
                           sleep 30
                      fi\'\'\'
               // sh "ps -ef|grep fsdk_crm|grep -v grep|cut -c 9-15|xargs kill -9"
            }
           
        }
        
    }
    
    post{
        failure{
            echo "构建失败"
              emailext body: \'\'\'**************************************<br>
                           XXX测试环境 ${build_faild}
                           <br>
                  **************************************<br>\'\'\', 
                  subject: \'Test\', 
                  to:params.Email_Reception
           
        }
        
        success{
            echo "构建成功"
            emailext body: \'\'\'**************************************<br>
                           ${build_success}
                           XXX测试环境已提测部署<br>
            **************************************<br>\'\'\', 
                  subject: \'Test\', 
                  to:params.Email_Reception
            
        }
    }
}

    构建结果:

分类:

技术点:

相关文章:

  • 2022-03-05
  • 2021-11-28
  • 2021-08-18
  • 2021-05-27
  • 2022-02-20
  • 2021-11-29
  • 2021-11-03
猜你喜欢
  • 2022-12-23
  • 2021-05-19
  • 2022-02-19
  • 2022-12-23
  • 2022-01-04
  • 2021-10-29
  • 2021-05-20
相关资源
相似解决方案