docker+jenkins+maven assembly 部署springboot項目


說明:通過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>
View Code

  三、在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>
View Code

 

四、添加服務啟動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
View Code

 

五、服務器安裝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
View Code

 

八、jenkins立即構建,即可構建成功。注意項目在jenkins里面運行,端口需要先映射出來,或者通過掛載的方式

docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean 
## -p 后面新增需要映射出去的端口
需先刪除jenkins容器,修改啟動命令后再啟動


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM