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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、环境说明

所需服务器:

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方式-CSDN博客文章浏览阅读219次,点赞6次,收藏4次。Jenkins运行需要jdk环境支持,如果jdk的版本不对,可能会导致运行时出现无法预料的问题。https://blog.csdn.net/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-CSDN博客文章浏览阅读153次。1.列出所有与svn相关的软件包2.删除软件包。https://blog.csdn.net/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

### Jenkins CI/CD 平台介绍 Jenkins 是一款开源自动化服务器,主要用于支持软件开发中的持续集(CI) 和持续交付(CD)[^1]。通过插件机制,Jenkins 支持各种构建工具和技术栈,能够与多种源码控制系统、测试框架以及部署技术无缝对接。 #### 主要功能特性 - **多语言支持**:无论是Java、Python还是Go等编程语言环境下的应用都可以利用Jenkins自动化的编译打包过程。 - **丰富的插件库**:拥有庞大的社区贡献插件集合,几乎涵盖了所有的主流技术和工作流需求。 - **灵活的任务调度**:可以根据时间触发器或者事件驱动的方式执行预定义好的作业链路。 - **可视化管理界面**:提供友好的Web UI用于配置和监控流水线状态变化情况。 - **分布式架构设计**:允许将计算密集型任务分发到多个节点上并行处理以提高效率[^2]。 ```bash # 安装Jenkins所需依赖包 sudo yum install java-1.8.0-openjdk-devel -y # 下载最新版war文件 wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war # 启动服务端口默认为8080 java -jar jenkins.war --httpPort=8080 & ``` #### 实际应用场景展示 假设有一个典型的Web应用程序开发场景,在每次提交代码变更至Git仓库之后,希望立即启动一系列操作来验证新版本的质量: 1. 自动拉取最新的源代码副本; 2. 执行单元测试确保没有引入新的缺陷; 3. 构建可发布的二进制文件或镜像制品; 4. 将这些产物推送到指定位置供后续环节使用; 上述整个流程可以通过编写简单的Shell脚本配合特定语法描述而的Pipeline DSL(领域专用语言),从而让机器代替人工重复劳动,极大提升了工作效率的同时降低了人为失误的风险概率[^3]。 ```groovy pipeline { agent any stages { stage('Checkout') { steps { git 'https://github.com/user/repo.git' } } stage('Build') { steps { sh './mvnw clean package' } } stage('Test') { steps { sh './mvnw test' } } stage('Deploy') { steps { script { def time = new Date().format('yyyyMMddHHmmss', TimeZone.getTimeZone('UTC')) sh "cd target && tar czf web-${time}.tar.gz *" } } } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值