Jenkins发布Java项目

发布java项目的步骤:

  1. 拉取代码并打包,mvn clean package
  2. 备份目标服务器上已有的要发布项目
  3. 将包传到目标服务器的webapss目录中,需做免密登录
  4. 重启目标服务器的tomcat服务
  5. 修改项目的配置
  6. 重启目标服务器的tomcat服务

部署环境

项目要求:
两台主机上分别安装jenkins,tomcat

环境说明:

系统平台 IP 需要安装的服务
rhel-8.2 192.168.170.132 Jenkins
rhel-8.2 192.168.170.129 Tomcat

tomcat部署

[root@hostlocal ~]# yum install java-17-openjdk* -y
//下载tomcat并解压
[root@localhost src]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
[root@hostlocal src]# tar xf apache-tomcat-9.0.65.tar.gz -C /usr/local/
[root@hostlocal local]# mv apache-tomcat-9.0.65/ tomcat
//使用service控制tomcat
[root@localhost ~]# cd /usr/lib/systemd/system
[root@localhost system]# cp sshd.service tomcat.service
[root@localhost system]# vim tomcat.service 
[root@localhost system]# cat tomcat.service 
[Unit]
Description=Tomcat server daemon
After=network.target sshd-keygen.target

[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/catalina.sh start
ExecStop=/usr/local/tomcat/bin/catalina.sh stop
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
[root@localhost system]# systemctl daemon-reload 
[root@localhost system]# systemctl enable --now tomcat.service 
Created symlink /etc/systemd/system/multi-user.target.wants/tomcat.service → /usr/lib/systemd/system/tomcat.service.
[root@hostlocal system]# ss -antl
State      Recv-Q     Send-Q              Local Address:Port          Peer Address:Port     Process     
LISTEN     0          128                       0.0.0.0:111                0.0.0.0:*                    
LISTEN     0          32                  192.168.122.1:53                 0.0.0.0:*                    
LISTEN     0          128                       0.0.0.0:22                 0.0.0.0:*                    
LISTEN     0          5                       127.0.0.1:631                0.0.0.0:*                    
LISTEN     0          1              [::ffff:127.0.0.1]:8005                     *:*                    
LISTEN     0          128                          [::]:111                   [::]:*                    
LISTEN     0          100                             *:8080                     *:*                    
LISTEN     0          128                             *:80                       *:*                    
LISTEN     0          128                          [::]:22                    [::]:*                    
LISTEN     0          5                           [::1]:631                   [::]:*                    
LISTEN     0          128                             *:443                      *:*            
//两台主机做好免密登录
[root@localhost ~]# ssh-keygen -t rsa

[root@localhost ~]# ssh-copy-id root@192.168.170.132
root@192.168.170.132's password: 

//安装打包软件
[root@localhost ~]# yum -y install git maven



生成拉取代码的脚本


git 'https://gitee.com/wukongcrm/72crm-java.git'

编写流水线脚本

pipeline {
    agent any 
    stages {
        stage("pull code"){
            steps {
                git 'https://gitee.com/wukongcrm/72crm-java.git'
            }
            
        }  
    }
}

编写完后测试

命令行内查看

[root@hostlocal ~]# cd /root/.jenkins/workspace/test
[root@hostlocal test]# ls
72crm.bat  72crm.sh  Dockerfile  docs  LICENSE.txt  package.xml  pom.xml  README.md  src  target  ux 

打包
编写打包脚本

pipeline {
    agent any 
    stages {
        stage("pull code"){
            steps {
                git 'https://gitee.com/wukongcrm/72crm-java.git'
            }
        }    
        stage("make pkg"){
            steps {
                sh """
                    mvn clean package -Dmaven.test.skip=true
                """
            }
        }  
    }
}

命令行查看项目test目录

[root@localhost test]# cd target/   //target为打包后生成的目录
[root@localhost target]# ls
classes            ly-simple-tomcat-0.0.1-SNAPSHOT      maven-archiver
generated-sources  ly-simple-tomcat-0.0.1-SNAPSHOT.war  maven-status

编写输出脚本

pipeline {
    agent any 
    stages {
        stage("pull code"){
            steps {
                git 'https://gitee.com/wukongcrm/72crm-java.git'
            }
        }    
        stage("make pkg"){
            steps {
                sh """
                    mvn clean package -Dmaven.test.skip=true
                """
            }
        } 
        stage("publish"){
            steps {
                sh """
                    cd /root/.jenkins/workspace/test/target/
                   scp ly-simple-tomcat-0.0.1-SNAPSHOT.war   root@192.168.170.129:/usr/local/tomcat/webapps/
                   ssh root@192.168.170.129 '/usr/local/tomcat/bin/catalina.sh stop && /usr//local/tomcat/bin/catalina.sh start'
                   """
            }
        }
    }
}

posted @ 2022-08-18 23:23  夏天的海  阅读(370)  评论(0)    收藏  举报