自动部署改造

引言

     1.  为什么要改成自动部署?

      多人协作开发中成果无法实时展现、项目发布过程繁琐周期长

     2.  需要什么准备工作?

      支持脚本打包的项目,自动部署工具jenkins,发布、备份、监控的脚本

       下载分流jenkins下载

jenkins是什么

       Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

jenkins安装、配置

太多类似文章了此处不再大动篇幅,博主仅推荐几篇以作参考

jenkins安装(推荐使用war包运行 不受环境限制)

https://blog.csdn.net/achi010/article/details/93708768

jenkins配置
https://www.jianshu.com/p/5f671aca2b5a

jenkins邮件配置

https://www.cnblogs.com/peachh/p/9740069.html

https://www.cnblogs.com/imyalost/p/8781759.html

改造案例

环境

window10发布到centos7 tomcat8+svn+maven/nodejs两个项目 

改造思路

自动部署项目到服务器.xmind

jenkins配置

Configure System

邮件功能需要支持smtp的邮箱,本处以qq邮箱为例,具体如何申请可参考下文

https://jingyan.baidu.com/article/0f5fb099dffe7c6d8334ea31.html

邮件模板参考

<!DOCTYPE html>    
<html>    
<head>    
<meta charset="UTF-8">    
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>    
</head>    
    
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"    
    offset="0">    
    <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">    
        <tr>    
            本邮件由系统自动发出,无需回复!<br/>            
            各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br> 
            <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>   
        </tr>    
        <tr>    
            <td><br />    
            <b><font color="#0B610B">构建信息</font></b>    
            <hr size="2" width="100%" align="center" /></td>    
        </tr>    
        <tr>    
            <td>    
                <ul>    
                    <li>项目名称 : ${PROJECT_NAME}</li>    
                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>    
                    <li>触发原因: ${CAUSE}</li>    
                    <li>构建状态: ${BUILD_STATUS}</li>    
                    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    
                    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>    
                    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>    
                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>    
                </ul>    

<h4><font color="#0B610B">失败用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/>

<h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>
<hr size="2" width="100%" />
<ul>
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>

            </td>    
        </tr>    
    </table>    
</body>    
</html>   

Global Tool Configuration

 

后端项目配置(maven构建)

svn配置

测试环境适合根据代码的更新情况去发布(下图是5分钟监测一次代码更新),正式环境可以改用Build periodically定时发布

由于jenkins的svn插件有bug导致更新失败,需要增加一个代码更新步骤

发布脚本后续会贴出

构建的邮件通知(默认就行,如有需要增加收件人可以在系统全局设置或者配置更多收件人)

前端项目(nodejs构建)

代码更新、构建触发器、邮件 部分同上

发布脚本

tomcat发布脚本

tomcat与项目检测脚本

项目打包改造

后端项目springboot打包改造

默认为dev打包 通过mvn clean package -P prod 不加-P默认dev

  <profiles>
        <!--mvn clean package -P prodzzt-->
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <active>dev</active>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <active>prod</active>
            </properties>
        </profile>
    </profiles>

前端项目npm打包不是特别清楚仅记录一个可能的问题  通过npm run auto执行

去除打包分析插件 防止打包完成后继续保留待命状态

题外:gradle打包可以参考 通过gradle clean war -Dprofile=test执行不加-Dprofile默认develop

//设置配置文件
def env = System.getProperty("profile") ?: "develop"
def date = new Date().format("yyyy-MM-dd")
sourceSets {
    main {
        resources {
            srcDirs = ["src/main/resources/common", "src/main/resources/$env"]
        }
    }
}
processResources {
    from('src/main/java') {
        include '**/*.properties'
        include '**/*.xml'
        //exclude "**/*.java"
    }
}
task copyTask(type: Copy) {
    from ('src/main/java'){
        include '**/*.properties'
        include '**/*.xml'
    }
    into "build/classes/java/main"
}
processTestResources.dependsOn copyTask
/*task copyTask(type: Copy) {
    println  "$projectDir/src/main/resources/$env/"
    println "$webAppDir/properties"
    from "$projectDir/src/main/resources/$env/"
    include '*.properties'
    into "$webAppDir/properties"
}*/
war{
    //dependsOn copyTask
    from("src/main/resources/$env") {
        include "web*.properties"
        into("properties")
    }
    if(env!="develop"){
        archiveName "project-$env-$date"+".war"
    }else{
        archiveName "project-$version-$env"+".war"
    }
    //archiveName "project-$version-$env-$date"+".war"
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
辽B代驾管理系统对代驾订单管理、用户咨询管理、代驾订单评价管理、代驾订单投诉管理、字典管理、论坛管理、公告管理、新闻信息管理、司机管理、用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行辽B代驾管理系统程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。辽B代驾管理系统的开发让用户查看代驾订单信息变得容易,让管理员高效管理代驾订单信息。 辽B代驾管理系统具有管理员角色,用户角色,这几个操作权限。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看代驾订单,删除代驾订单操作,新增代驾订单操作,修改代驾订单操作。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。新闻管理页面,此页面提供给管理员的功能有:新增新闻,修改新闻,删除新闻。新闻类型管理页面,此页面提供给管理员的功能有:新增新闻类型,修改新闻类型,删除新闻类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值