jenkins 系列文章,包含效果演示(2021-01-25 10:10:25 效果演示到期,轻量应用服务器只申请了试用2个月时间)以及实现说明:
jenkins实现 windows server 2012环境下自动部署war
jenkins实现Centos 7 下自动部署war
jenkins 实现gitbook项目(电子书)的自动发布
jenkins 实现源码到docker镜像的自动部署运行


最近琢磨jenkins,实现了window server环境下的springboot工程的自动部署、停止与重启,现详细记录如下。

  • 服务器使用的腾讯云15天免费体验服务器,申请地址 https://cloud.tencent.com/act/free
    安装软件为jenkins 、nginx、jdk、mysql 。
    jenkins 下载地址为 https://jenkins.io/zh/download/ 选择windows安装包安装或war 运行。

具体端口配置为

  • jenkins 8080端口
  • nginx 80、443端口,同时绑定域名 https://test.00fly.online
  • 应用1:8081端口
  • 应用2:8082端口

具体操作流程为

  1. 安装nginx 1.16.0,配置负载均衡和ssl
  2. 安装jenkins
  3. 配置maven项目信息
  4. 配置脚本实现工程的编译、打包、停止应用、上传、启动应用。

nginx.conf配置文件为

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream; 
    sendfile        on;
    keepalive_timeout  65; 
	
	#设定负载均衡的服务器列表
    upstream test {
        #weigth参数表示权值,权值越高被分配到的几率越大
        server 127.0.0.1:8081   weight=5;
        server 127.0.0.1:8082   weight=5;
    }
	
	server {
		listen 80;
		server_name test.00fly.online; 
	}

    server {
		listen 		 443 ssl;
		ssl_certificate     C:/Java/nginx-1.16.0/cert/test.00fly.pem;
		ssl_certificate_key C:/Java/nginx-1.16.0/cert/test.00fly.key;
		ssl_session_timeout 5m;
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
		ssl_prefer_server_ciphers on;
	
        server_name  test.00fly.online; 

        location / {
		    proxy_pass http://test;
            root   html;
            index  index.html index.htm;
        } 
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        } 
    } 
}

配置构建触发器为 H/30 * * * * ,意思就是每30分钟打包发布一次。
jenkins 配置maven工程打包后步骤为执行windows batch command
配置脚本为

tasklist|find "javaw"

@echo off
@set port=8081
for /f "tokens=5" %%i in ('netstat -aon ^| findstr %port%') do (
    set n=%%i
    goto js
)
:js
@echo on
taskkill /f /pid %n%

copy target\springboot-dbutils.war C:\work\node\ /y

@echo off
cd C:\work\node\
start javaw -jar -Xms64m -Xmx64m springboot-dbutils.war --server.port=%port%
exit
@echo off
@set port=8082
for /f "tokens=5" %%i in ('netstat -aon ^| findstr %port%') do (
    set n=%%i
    goto js
)
:js
@echo on
taskkill /f /pid %n%

copy target\springboot-dbutils.war C:\work\web\ /y

@echo off
cd C:\work\web\
start javaw -jar -Xms64m -Xmx64m springboot-dbutils.war --server.port=%port%

@echo on
tasklist|find "javaw"
exit

jenkins运行console日志为:

19:52:39 [jks-demo] $ cmd /c call C:\Windows\TEMP\jenkins6777398386323004703.bat
19:52:39 channel stopped
19:52:39 
19:52:39 C:\Java\Jenkins\workspace\jks-demo>tasklist | find "javaw" 
19:52:39 javaw.exe                      248 Services                   0    189,576 K
19:52:39 javaw.exe                     7596 Services                   0    189,592 K
19:52:39 
19:52:39 C:\Java\Jenkins\workspace\jks-demo>taskkill /f /pid 248 
19:52:39 成功: 已终止 PID 为 248 的进程。
19:52:39 
19:52:39 C:\Java\Jenkins\workspace\jks-demo>copy target\springboot-dbutils.war C:\work\node\ /y 
19:52:39 已复制         1 个文件。
19:52:49 Process leaked file descriptors. See https://jenkins.io/redirect/troubleshooting/process-leaked-file-descriptors for more information
19:52:49 [jks-demo] $ cmd /c call C:\Windows\TEMP\jenkins3155337006286886574.bat
19:52:58 
19:52:58 C:\Java\Jenkins\workspace\jks-demo>taskkill /f /pid 7596 
19:53:11 成功: 已终止 PID 为 7596 的进程。
19:53:11 
19:53:11 C:\Java\Jenkins\workspace\jks-demo>copy target\springboot-dbutils.war C:\work\web\ /y 
19:53:11 已复制         1 个文件。
19:53:11 
19:53:11 C:\work\web>tasklist | find "javaw" 
19:53:18 javaw.exe                     7132 Services                   0    153,524 K
19:53:18 javaw.exe                     3172 Services                   0    100,968 K
19:53:19 
19:53:19 C:\work\web>exit
19:53:29 Process leaked file descriptors. See https://jenkins.io/redirect/troubleshooting/process-leaked-file-descriptors for more information
19:53:29 Finished: SUCCESS

https://test.00fly.online 网站运行效果为:
在这里插入图片描述在这里插入图片描述
可以看到应用实现了负载均衡,加载的war为C:\work\node\springboot-dbutils.war或C:\work\web\springboot-dbutils.war,对比war时间推算应用每半小时更新一次。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐