Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器

  • 安装Tomcat
  • 配置Jenkins服务器的环境变量
  • Jenkins中下载需要的插件
  • Jenkins全局工具配置
    • Jenkins中配置JDK
    • Jenkins中配置Git
    • Jenkins中配置Maven
  • Jenkins中构建Maven工程
      • 创建一个maven项目
      • 连接git仓库
      • Maven构建命令
      • 构建后操作发送到远端tomcat服务器中
      • 查看构建日志和访问tomcat
  • Jenkins构建Spring-Boot项目的jar包部署到远程服务器上
    • 安装Publish Over SSH插件
    • 系统配置
    • 具体项目构建设置
    • 构建访问部署的项目
  • Jenkins构建Spring-Boot项目的war包部署到远程服务器上无法访问的解决问题

安装Tomcat

  • 上传apache-tomcat-8.5.53.tar.gz到安装tomcat的服务器上解压

    tar -zxvf apache-tomcat-8.5.53.tar.gz
    

    解压到 /usr/local/tomcat/apache-tomcat-8.5.53目录下

  • 修改/usr/local/tomcat/apache-tomcat-8.5.53/tomcat-users.xml文件,添加用户和密码

    这里我写的是root,这个用户是可以随便写的

    <tomcat-users xmlns="http://tomcat.apache.org/xml"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
                  version="1.0">
    <role rolename="tomcat"/>
    <role rolename="role1"/>
    <role rolename="manager-script"/>
    <role rolename="manager-gui"/>
    <role rolename="manager-status"/>
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/>
    <user username="root" password="123456" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
    </tomcat-users>
    
  • 修改/usr/local/tomcat/apache-tomcat-8.5.53/server.xml文件,添加项目

    这里是可以添加多个的

    <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
          <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t "%r" %s %b" />
           
           <Context docBase="admin-service" path="/admin-service" reloadable="true"/>
    	   <Context docBase="user-login" path="/user-login" reloadable="true"/>
          </Host>
    
  • 在Tomcat conf/Catalina/localhost目录下创建一个manager.xml文件,允许远程访问manager站点:(踩坑提示:此步骤是Tomcat 8.5中特有的,如果不配置的话总是遇到异常:Server returned HTTP response code: 403 for URL: http://test.mest.my:8080//manager/text/list)

    vim manager.xml

    <Context privileged="true" antiResourceLocking="false">
              <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
    </Context>
    

配置Jenkins服务器的环境变量

  • 配置jdk,上传linux版本的jdk压缩包解压到该目录

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第1张图片

  • 配置git

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第2张图片

如果执行该命令不显示git执行文件路径,那么就在线安装git

apt install git

  • 配置mavan,上传linux版本的mavan解压到该目录

    maven的settings.xml配置文件使用nexus的私服配置

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第3张图片

  • 配置JDK和MAVEN环境变量

    vim /etc/profile
    # 在文件末尾添加如下内容,保存
    export JAVA_HOME=/usr/local/java/jdk1.8.0_231
    export MAVEN_HOME=/usr/local/maven
    export JRE_HOME=/usr/local/java/jdk1.8.0_231/jre
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin:$PATH:$HOME/bin
    
  • 刷新环境变量,让修改后的文件生效

    source /etc/profile

Jenkins中下载需要的插件

  • 安装maven插件

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第4张图片

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第5张图片

  • 安装 Deploy to container Plugin

    该插件主要运用在Java项目中,功能是“将成功编译的War/Jar包部署到远程的应用服务器上

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第6张图片

Jenkins全局工具配置

Jenkins中配置JDK

  • Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第7张图片

  • Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第8张图片

Jenkins中配置Git

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第9张图片

Jenkins中配置Maven

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第10张图片

Jenkins中构建Maven工程

创建一个maven项目

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第11张图片

连接git仓库

用户和密码是gitlab中的用户名和密码

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第12张图片

Maven构建命令

clean install -Dmaven.test.skip=true

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第13张图片

构建后操作发送到远端tomcat服务器中

此处的用户名和密码和远程tomcat中的tomcat-users.xml的用户和密码对应

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第14张图片

查看构建日志和访问tomcat

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第15张图片
Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第16张图片

Jenkins构建Spring-Boot项目的jar包部署到远程服务器上

安装Publish Over SSH插件

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第17张图片

系统配置

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第18张图片

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第19张图片

具体项目构建设置

  • 在远端服务器tomcat上创建文件目录

    mkdir -p /usr/local/spring-boot/admin-service/admin-service-jar

    cd /usr/local/spring-boot/admin-service
    
    vim start.sh
    #!/bin/bash
    #必须要定义一下JAVA_HOME不然下面的java找不到,导致不执行
    export JAVA_HOME=/usr/local/java/jdk1.8.0_231
    echo ${JAVA_HOME}
    chmod 777 /usr/local/spring-boot/admin-service/admin-service-jar/admin-service-1.0.0-SNAPSHOT.jar
    echo "执行...."
    cd /usr/local/spring-boot/admin-service/admin-service-jar
    nohup ${JAVA_HOME}/bin/java -jar admin-service-1.0.0-SNAPSHOT.jar > /dev/null &
    echo "启动成功"
    
    vim stop.sh
    #!/bin/bash
    echo "stop SpringBoot admin-service"
    pid=`ps -ef | grep admin-service-1.0.0-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
    echo "旧应用进程id:$pid"
    if [ -n "$pid" ]
    then
    	kill -9 $pid
    fi
    
    

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第20张图片

构建访问部署的项目

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第21张图片
Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第22张图片

Jenkins构建Spring-Boot项目的war包部署到远程服务器上无法访问的解决问题

  • 在启动类中添加启动配置类

    @SpringBootApplication
    public class ProviderAdminApplication extends SpringBootServletInitializer {
        public static void main(String[] args) {
            SpringApplication.run(ProviderAdminApplication.class, args);
        }
    
        /**
         *新增此方法
         */
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            // 注意这里要指向原先用main方法执行的Application启动类
            return builder.sources(ProviderAdminApplication .class);
        }
    
    }
    

Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器_第23张图片

你可能感兴趣的:(Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器)