zoukankan      html  css  js  c++  java
  • [持续集成]Jenkins 自动化部署 Maven 工程

    一、Jenkins 持续部署原理图

    image

    基础服务:

    1 SVN 服务

         SVN是Subversion的简称,是一个开放源代码的版本控制系统。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。(源自百度百科)

    2 Nexus 服务

         Maven的一种仓库软件。

    3 Jenkins服务

         持续集成工具。

    4 Web容器服务(Tomcat)

         部署web应用的容器

    二、工程代码配置

    1 配置文件

    分别提供不同部署环境下的配置文件组(通常包括数据库配置、文件存储目录、缓存地址、中间件地址等)

    src/main/resources

           distribute

                    debug   ---------- 调试服务器配置文件夹

                          config.properties

                          spring-xxxx.xml

                          …

                    test     -----------  测试服务器配置文件夹

                          config.properties

                          spring-xxxx.xml

                          …

                    prod   ------------  生产服务器配置文件夹

                          config.properties

                          spring-xxxx.xml

                          …

          config.properties   ------------ 默认本地开发使用的配置文件(直接存放在 src/main/resources 根目录)

          spring-xxxx.xml

          …

    2 pom.xml

    分别配置不同部署环境下的profile,实现在编译打包时,根据部署环境不同,替换不同的配置文件

    <project>

             <profiles>

                 …(此处可配置不同环境下的profile)

             </profiles>

    </project> 

    示例: 调试profile 配置

    <profile>
        <id>debug</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>compile</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <tasks>
                                    <copy todir="${basedir}/src/main/webapp/WEB-INF/classes/" overwrite="true">
                                        <fileset dir="${basedir}/src/main/resources/distribute/debug/" />
                                    </copy>

                                </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>           
        </build>
    </profile>

    注:蓝色字体实现了调试服务器配置文件的拷贝覆盖。

    三、SVN应用

    1 开发人员代码上传

    2 为jenkins 配置代码下载账号

    四、Tomcat配置

    1 配置Tomat 角色 和 用户,用以实现远程部署

      ${Tomcat_home}/conf/tomcat-user.xml,增加角色和用户

    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <user username="admin" password="admin" roles="manager-gui,manager-script"/>

    五、Jenkins 构建项目配置

    1 系统配置

    系统管理-> Global Tool Configuration

    jdk

    maven

    2 插件配置

    系统管理-> 管理插件

    安装部署插件:Deploy to container Plugin

    安装版本插件:Subversion Plug-in

    3 项目配置 -- 新建项目

    应为不同部署环境,建立不同的Jenkins项目,分别配置不同的buiid 命令 和 不同的部署容器

    (1)输入项目名称

    (2)选择构建一个Maven项目

    (3)SVN配置

             输入 Repository  URL

             Add Credentials 并选择(SVN 账号密码,推荐使用为Jenkins开通的账号

    (4)Build

             Root POM: pom.xml

             Goal and options : clean install -U -Pdebug  (此处使用调试服务器配置进行编译打包,-P后单词应对应pom.xml 中 profile 的 id)

    (5)构建后操作

            增加 deploy war/ear to a container

            WAR/EAR files : **/target/*.war

            containers :  TomcatN.x

                                   Manager user name : admin     (此处配置应与tomcat 配置的用户一致)

                                   Manager password : admin

                                   Tomcat URL : http://IP:PORT/ (此处只应配置到端口号)

    (6)保存,然后立即构建,可查看构建日志,根据构建日志,修正错误,直至显示

    Finished: SUCCESS
     
    至此,Maven项目可以实现通过Jenkins一键部署到不同服务器。 
     
     
  • 相关阅读:
    TYPE_SCROLL_INSENSITIVE is not compatible with CONCUR_UPDATABLE
    with admin option /with grant option
    通过动态SQL语句创建游标
    Vue:在vue-cli中使用Bootstrap
    Vue:$set和$delete
    Vue:如何在vue-cli中创建并引入自定义组件
    MVC教程四:Controller向View传值的几种方式
    Vue:生命周期
    Vue.js常用指令:v-model
    vue:过滤器
  • 原文地址:https://www.cnblogs.com/driftingshine/p/6673023.html
Copyright © 2011-2022 走看看