Jinkins打包项目成jar(Web-ui形式)

本文详细介绍了如何在Linux环境中搭建SVN和Jenkins服务器,包括JDK和Maven的安装配置,以及如何通过Jenkins进行代码版本控制、构建和远程部署。涵盖了从编写代码到构建清理的完整流程。

一、环境说明

所需服务器:

SVN服务器;

Jenkins服务器;

代码运行服务器;

服务器环境要求:

SVN服务器:无

Jenkins服务器:jdk、maven

运行服务器:jdk

执行步骤:

编写Java代码;

代码上传SVN;

Jenkins从SVN拉取代码,编译构建后,推送到运行服务器上并运行;

执行说明:

测试项目DemoApplication上传到svn的仓库p2中,jenkins通过Subversion插件从svn中拉取代码,通过Maven Intergration插件配置pom.xml文件位置和要执行的构建命令,最后通过Publish Over SSH插件将构建好的jar包通过ssh上传到目标服务器的指定文件夹中。

二、Jenkins服务器搭建

2.1 JDK安装

下载

yum install -y java-devel

配置环境变量(vi /etc/profile)

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH

刷新环境变量

source /etc/profile

2.2 Maven安装

maven官网下载tar.gz压缩包,在linux上解压

解压命令

tar -zxvf <apache-maven-xxx.tar.gz>

 配置环境变量

export MAVEN_HOME=/opt/maven/apache-maven-3.9.6
export PATH=$MAVEN_HOME/bin:$PATH

刷新环境变量

source /etc/profile

修改maven配置文件

// 配置本地仓库
<localRepository>/opt/maven/repository</localRepository>
// 配置阿里云镜像,要在<mirrors>标签里
    <mirror>
      <id>aliyun-maven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven mirror</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

2.3 Jenkins安装

参考连接:

Centos7安装jenkins-WAR方式-优快云博客文章浏览阅读219次,点赞6次,收藏4次。Jenkins运行需要jdk环境支持,如果jdk的版本不对,可能会导致运行时出现无法预料的问题。https://blog.youkuaiyun.com/null_of_error/article/details/136006814?spm=1001.2014.3001.5501

官方下载war包(2.346.1版,适配jdk8)

War Jenkins Packagesicon-default.png?t=N7T8https://get.jenkins.io/war-stable/

后台运行

nohup java -jar jenkins.war --httpPort=8080 &

浏览器访问(解锁jenkins)

 http://ip:port

 安装插件

Subversion 2.15.5

Localization:Chinese 1.0.24

Credentials

Maven Intergration 3.22

Publish Over SSH 1.24

2.4 Jenkins配置JDK环境

在【Manage Jenkins】->【Gloal Tool Configuration】-> 【JDK】下,新增jdk。

2.5 Jenkins配置Maven环境

在【Manage Jenkins】->【Gloal Tool Configuration】-> 【Maven】下,新增maven。

2.6 Jenkins配置SSH服务器

在【Manage Jenkins】->【Configure System】-> 【SSH Servers】下,配置运行服务器信息,点击高级按钮,登录配置密码。RemoteDirectory代表要把jar包传递到哪个目录(后面会用到这个配置,不要忘了)。

三、SVN服务器搭建

参考连接

centos7安装svn-优快云博客文章浏览阅读153次。1.列出所有与svn相关的软件包2.删除软件包。https://blog.youkuaiyun.com/null_of_error/article/details/136000706?spm=1001.2014.3001.5501

四、运行服务器搭建

 4.1 JDK环境配置

 下载

yum install -y java-devel

配置环境变量(vi /etc/profile)

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH

刷新环境变量

source /etc/profile

五、Jenkins打包流程

5.1 编写测试代码DemoApplication

代码结构:

pom.xml

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.3.RELEASE</version>
    </parent>
    <packaging>jar</packaging>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

DemoApplication.java

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

HelloController.java

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello(){
        return "hello ," + new Date();
    }
}

application.properties

server.port=8080

5.2 上传代码到SVN

5.3 Jenkins新建Item

选择【新建一个maven项目】

5.4 Jenkins配置SVN地址

在【源码管理】中,选择subversion,填入URL和用户账号

5.5 Jenkins配置Build

在【Build】中,配置pom.xml所在位置,和要执行的maven命令

clean package

5.6 Jenkins配置Post Steps

在【Post Steps】中选择【send files or execute commands over SSH】

  • 在【Name】中选择前面配置的SSH服务器;
  • 在【Source file】中选择要传输的文件;(可以在服务器的/root/.jenkins/workspace中查看到新建的Item,如果没有就先执行一下任务的build。进入Item中可以看到jenkins使用Maven插件构建的代码目录,在target中选择要传输的文件即可。jenkins会从你创建的Item目录开始查找,本文中是Project1,你只需要写相对路径即可。)

  • 在【Remove prefix】中配置去除的前缀;(即默认SSH传输的文件是带目录结构的。如本文中的target/DemoApplactaion.jar,传递到SSH服务器将会是/opt/test/target/DemoApplication.jar。去除target前缀后,就会是/opt/test/DemoApplication.jar。(其中/opt是3.6节配置的,/test是下面【Remote directory配置的】
  • 【Exec command】配置文件传输的SSH服务器后,要执行的命令,这里是启动jar;

使用以下命令,指定日志的存储路径,可以避免命令行卡顿导致任务执行失败

nohup java -jar /opt/test/DemoApplication-*.jar >app.log 2>&1 &

5.7 Jenkins配置Pre Steps

选择Send files or execute commands over SSH,

执行linux中的shell脚本,杀死进程、删除jar包和日志文件。

clean.sh

#!/bin/bash

#获取脚本传入的第一个变量
AppName=$1
if [ -z $AppName ]
    then
	echo '应用名称不能为空'
	exit 1
fi

#获取pid
pid=`ps -ef | grep $AppName | grep 'java -jar' | awk '{printf $2}'`

#使用-z判断pid是否为空
if [ -z $pid ];
    then
	echo "$AppName not running..."
	exit 1
    else
	kill -9 $pid
	echo "$AppName stoping..."
fi

#查询是否真正kill掉
check=`ps -ef | grep -w $pid | grep 'java -jar'`
if [ -z $check ]
    then
	echo "$AppName sotpped!"
    else
	echo "sotp $AppName failed!"
fi

#删除历史数据
rm -rf DemoApplication-*.jar
rm -rf nohup.out

5.8 执行构建

参考视频 

【尚硅谷】Jenkins教程(从配置到实战)_哔哩哔哩_bilibili

### 使用 Docker 安装 Jenkins 并配置 Java 项目打包流程 #### 安装 Jenkins 使用 Docker 安装 Jenkins 是一种快速且便捷的方式。可以通过以下命令启动 Jenkins 容器: ```bash docker run -itd --name jenkins \ -p 8888:8080 -p 50000:50000 \ --restart always \ -v /usr/soft/jenkins_home:/var/jenkins_home \ jenkins ``` 这个命令会拉取 Jenkins 的官方镜像,并启动一个容器实例,同时将宿主机的 `/usr/soft/jenkins_home` 目录挂载到容器中的 `/var/jenkins_home` 目录,以便持久化 Jenkins 的数据[^3]。 #### 配置时区 默认情况下,Jenkins 容器的时间可能会与宿主机时间不一致。为了解决这个问题,可以在启动容器时通过环境变量设置时区: ```bash docker run -itd --name jenkins \ -p 8888:8080 -p 50000:50000 \ --restart always \ -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \ -v /usr/soft/jenkins_home:/var/jenkins_home \ jenkins ``` 如果已经启动了 Jenkins 容器,可以通过进入 Jenkins 的脚本控制台手动修改时区设置: 1. 访问 Jenkins 的 URL:`http://<jenkins-url>/script` 2. 执行以下脚本: ```groovy System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone','Asia/Shanghai') ``` #### 安装必要的插件 在 Jenkins 中,需要安装一些插件来支持 Maven 和 Docker 的集。登录到 Jenkins 后,导航到“管理 Jenkins” > “插件管理”,然后安装以下插件: - **Maven Integration plugin** - **Docker plugin** #### 创建 Maven 项目 1. 登录到 Jenkins,点击“新建任务”。 2. 输入任务名称,选择“构建一个 Maven 项目”,然后点击“确定”。 3. 在“源码管理”部分,选择“Git”,输入项目的 Git 仓库地址。 4. 在“构建触发器”部分,可以选择触发构建的方式,例如定时构建或通过 Webhook 触发。 5. 在“构建环境”部分,可以勾选“删除工作空间后再构建项目”以确保每次构建都是干净的。 6. 在“构建”部分,添加调用顶层 Maven 目标,注意 Maven 版本选择刚刚添加的 Maven 而不是默认的 Maven,目标填写的是 Maven 命令,POM 填写的是 `pom.xml` 的路径(相对于拉下来的整个项目)。 #### 构建并打包 Docker 镜像 1. 在 Jenkins 的任务配置中,添加一个新的构建步骤,选择“执行 Shell”或“Windows 批处理命令”。 2. 编写脚本来构建 Docker 镜像。假设你的 Spring Boot 项目已经通过 Maven 构建了一个 JAR 文件,你可以使用以下脚本: ```bash #!/bin/bash # 构建 Docker 镜像 docker build -t my-springboot-app . ``` 3. 在 Dockerfile 中定义如何构建镜像: ```dockerfile # 使用官方的Java运行时作为父镜像 FROM openjdk:8-jdk-alpine # 将本地文件夹挂载到容器中 VOLUME /tmp # 添加当前目录下的jar包到容器中 ADD target/my-springboot-app.jar app.jar # 运行jar包 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 4. 点击“保存”按钮,然后点击“立即构建”来测试整个流程。 #### 查看容器运行情况 1. 可以使用 Portainer 来查看容器的运行情况。Portainer 是一个轻量级的管理界面,可以帮助你管理 Docker 容器。 2. 安装 Portainer: ```bash docker volume create portainer_data docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce ``` 3. 访问 Portainer 的 Web 界面(通常在 `http://<host-ip>:9000`),创建管理员账户,然后连接到本地 Docker 引擎。 4. 在 Portainer 中,可以看到所有正在运行的容器,并对其进行管理。 #### Windows 下访问 最后,在 Windows 下访问 Jenkins 构建的 Spring Boot 应用程序,可以通过浏览器访问 Jenkins 提供的 UI 界面,或者直接访问应用程序的服务端口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值