說明:通過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容器,修改啟動命令后再啟動