docker + jenkins + maven assembly project deployment springboot

Description: The package jenkins one-click upload to start the service.

Project directory display:

 

 

 bin: Project start / stop shell script

config: project configuration file

lib: project labeled jar package storage location

logs: project run log storage location, the flexibility to use log4j

By maven assembly labeled name.tar.gz package, after decompression after entering the bin directory to run the project startup script to start the project.

With the use of a key docker + packaged with Jenkins.

First, build springboot + maven project

Second, add pom.xml dependence

<?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

  Third, add assembly.xml plug-in resources directory

<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容器,修改启动命令后再启动

Guess you like

Origin www.cnblogs.com/zhaochengzc/p/12072640.html
Recommended