说明:通过jenkins一键上传打包启动服务。
项目目录展示:
bin:项目启动/停止shell脚本
config:项目配置文件
lib:项目打成的jar包存放位置
logs:项目运行日志存放位置,可灵活使用log4j
通过maven assembly打成 name.tar.gz包,解压之后后进入到bin目录下运行项目启动脚本即可启动项目。
配合docker+jenkins一起使用可一键打包。
一、构建springboot+maven项目
二、添加pom.xml依赖

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.dfssi.zhaocheng</groupId> <artifactId>jenkinsAssembly</artifactId> <version>1.0-SNAPSHOT</version> <name>jenkinsAssembly</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!--springboot基本依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> </dependencies> <!--maven assembly打包插件--> <build> <finalName>jenkinsAssembly</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.1.0</version> <configuration> <encoding>UTF-8</encoding> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/main/resources/assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <!--<phase>install</phase>--> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
三、在resources目录下添加assembly.xml插件

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>bin</id> <formats> <format>tar.gz</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <!--<dependencySets>--> <!--<dependencySet>--> <!--<useProjectArtifact>false</useProjectArtifact>--> <!--<outputDirectory>/${artifactId}/lib</outputDirectory>--> <!--<unpack>false</unpack>--> <!--</dependencySet>--> <!--</dependencySets>--> <fileSets> <fileSet> <directory>${project.basedir}/bin</directory> <outputDirectory>/${artifactId}/bin</outputDirectory> <lineEnding>unix</lineEnding> <fileMode>744</fileMode> <includes> <include>*.sh</include> </includes> </fileSet> <fileSet> <directory>${project.basedir}/config</directory> <outputDirectory>/${artifactId}/config</outputDirectory> <lineEnding>unix</lineEnding> <fileMode>644</fileMode> <includes> <include>*.*</include> </includes> </fileSet> <fileSet> <directory>${project.basedir}/logs</directory> <outputDirectory>/${artifactId}/logs</outputDirectory> <lineEnding>unix</lineEnding> </fileSet> <!-- lib下的jar包不打入tar包里,插件这样打包会报错 --> <fileSet> <directory>${project.basedir}/target</directory> <outputDirectory>/${artifactId}/lib</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> </fileSets> </assembly>
四、添加服务启动shell脚本

#!/bin/bash #服务名称 SERVER_NAME=jenkinsAssembly # 源jar路径,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用java -jar 命令执行 JAR_NAME=jenkinsAssembly-1.0-SNAPSHOT # 源jar路径 #/usr/local/jenkins_home/workspace--->jenkins 工作目录 #demo 项目目录 #target 打包生成jar包的目录 JAR_PATH=/var/jenkins_home/workspace/jenkinsAssembly/target # 打包完成之后,把jar包移动到运行jar包的目录--->work_daemon,work_daemon这个目录需要自己提前创建 JAR_WORK_PATH=/var/jenkins_home/workspace/jenkinsAssembly/target echo "查询进程id-->$SERVER_NAME" PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'` echo "得到进程ID:$PID" echo "结束进程" for id in $PID do kill -9 $id echo "killed $id" done echo "结束进程完成" cd $JAR_PATH #解压jenkinsAssembly.tar.gz echo "开始 解压$SERVER_NAME" tar zxvf $SERVER_NAME.tar.gz echo "完成 解压$SERVER_NAME" echo "进入$SERVER_NAME/bin目录" cd $SERVER_NAME/bin BUILD_ID=dontKillMe nohup sh restartup.sh
五、服务器安装docker、通过docker下载jenkins镜像、运行docker容器在这里省略说明
六、jenkins新建maven工程,添加git路径,BUILD里面添加 pom.xml clean install即可构建项目到jenkins /var/jenkins_home/workspace/jenkinsAssembly/target目录下面
七、jenkins配置里面添加构建之后运行的脚本

#!/bin/bash #服务名称 SERVER_NAME=jenkinsAssembly # 源jar路径,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用java -jar 命令执行 JAR_NAME=jenkinsAssembly-1.0-SNAPSHOT # 源jar路径 #/usr/local/jenkins_home/workspace--->jenkins 工作目录 #demo 项目目录 #target 打包生成jar包的目录 JAR_PATH=/var/jenkins_home/workspace/jenkinsAssembly/target # 打包完成之后,把jar包移动到运行jar包的目录--->work_daemon,work_daemon这个目录需要自己提前创建 JAR_WORK_PATH=/var/jenkins_home/workspace/jenkinsAssembly/target echo "查询进程id-->$SERVER_NAME" PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'` echo "得到进程ID:$PID" echo "结束进程" for id in $PID do kill -9 $id echo "killed $id" done echo "结束进程完成" cd $JAR_PATH #解压jenkinsAssembly.tar.gz echo "开始 解压$SERVER_NAME" tar zxvf $SERVER_NAME.tar.gz echo "完成 解压$SERVER_NAME" echo "进入$SERVER_NAME/bin目录" cd $SERVER_NAME/bin #后台运行 BUILD_ID=dontKillMe nohup sh restartup.sh
八、jenkins立即构建,即可构建成功。注意项目在jenkins里面运行,端口需要先映射出来,或者通过挂载的方式
docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean
## -p 后面新增需要映射出去的端口
需先删除jenkins容器,修改启动命令后再启动