分分钟让你学会Jenkins自动化部署SpringBoot项目

1安装jenkins,在jenkins上安装jdk、git、maven就不说了,这些网上一大把。

    jenkins免密登录到其他服务器可以参考我这一篇:jenkins免密登录到其他服务器

2、看下项目中的配置,按照我的目录结构创建这2个文件和文件夹

分分钟让你学会Jenkins自动化部署SpringBoot项目_第1张图片

assembly.xml文件中的内容,是为了方便打包成zip格式的,而zip中包含了jar、bin、lib,如下:


	bin
	
		zip
	
	true
	
		
			${project.basedir}
			./
			
				README*
				LICENSE*
				NOTICE*
			
		
		
			target/config
			config
			
				**/*
				*.xml
				*.properties
				*.yml
			
		
		
			target/classes
			classes
		
		
			target/lib
			lib
		
		
			bin
			bin
			
				startup.*
			
			true
		
		
			target
			./
			
				*.jar
			
			
				*sources.jar
			
		
	

 startup.sh是一个启动脚本,里面的一些jvm参数可以根据自身项目进行修改,内容如下:

basepath=$(cd `dirname $0`; pwd)
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8888  -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -server -Xmx${jvm.Xmx} -Xms${jvm.Xms} -Xmn${jvm.Xmn} -Xss${jvm.Xss} -XX:MetaspaceSize=128m -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/logs/jvm/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -XX:ErrorFile=/logs/jvm/youxuan-web-error_%p.log -jar ../youxuan-web.jar --spring.profiles.active=${profiles.active}

对于里面一些应用,如${jvm.Xms}等,是根据如下来引用的,把下面的配置放在web中的xml下,至于启用那个环境的,根据jenkins中maven启动命令来


        
            prod
            
                prod
                2560m
                2560m
                1024m
                256k
                128m
                ${user.dir}/logs
                compile
            
        
        
            test
            
                test
                1024m
                1024m
                512m
                256k
                128m
                ${user.dir}/logs
                compile
            
        
        
            dev
            
                dev
                512m
                512m
                192m
                256k
                64m
                ${user.dir}/logs
                compile
            
            
                true
            
        
    

下面的配置也必不可少,同样放在web中的xml下,跟上面那个配置放在一个位置


        
        youxuan-web
        
        
            
                org.apache.maven.plugins
                maven-deploy-plugin
                2.8.2
                
                    true
                
            
            
                org.apache.maven.plugins
                maven-jar-plugin
                
                    
                        
                            true
                            lib/
                            
                            com.xxx.WebStarter
                            false
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.7.0
                
                    1.8
                    1.8
                    UTF-8
                
            
            
                org.apache.maven.plugins
                maven-source-plugin
                3.0.1
                
                    
                        attach-sources
                        
                            jar
                        
                    
                
            
            
            
                org.apache.maven.plugins
                maven-dependency-plugin
                
                    
                        copy
                        package
                        
                            copy-dependencies
                        
                        
                            
                                ${deploy.directory}/lib
                            
                        
                    
                
            
            
            
                org.apache.maven.plugins
                maven-assembly-plugin
                
                    
                        assembly.xml
                    
                
                
                    
                        make-assembly
                        package
                        
                            single
                        
                        
                            ${project.artifactId}
                        
                    
                
            
        
    

3、创建一个流水线类型的项目,按照参数化构建的过程添加参数:

分分钟让你学会Jenkins自动化部署SpringBoot项目_第2张图片

 git地址:

分分钟让你学会Jenkins自动化部署SpringBoot项目_第3张图片

maven构建命令 ,其中其他命令就不介绍了,介绍下 -P test

-P test 代表引用刚才pom.xml中test

这个配置,相当于指定了环境为test

分分钟让你学会Jenkins自动化部署SpringBoot项目_第4张图片

 shell脚本,真正的打包命令

pid=`ssh ${server} /opt/jdk1.8.0_161/bin/jps | grep ${project} | awk '{print $1}'`
ssh ${server} kill -9 $pid || echo "no java process"

rsync -avz --delete ${WORKSPACE}/${project}-server/target/${project}-server-bin.zip  ${server}:/xxx/service

ssh ${server} << EOF
rm -rf /xxx/service/${project}-server/
unzip /xxx/service/${project}-server-bin.zip  -d /qinwell/service
cd /qinwell/service/${project}-server
chmod 664 *.jar
cd /qinwell/service/${project}-server/bin/
chmod +x startup.sh
nohup ./startup.sh >/dev/null 2>&1 &
EOF

介绍下,上面主要干嘛的,先杀死原来的进程,远程数据同步,删除之前的项目,解压,赋予.jar执行权限,执行项目中的脚本。

最后来个总结:

上面的配置,是我在生产中使用,按照如上配置,绝壁没问题呀,感觉帮助了你,点个赞再走吧,么么哒

你可能感兴趣的:(Jenkins)