Jenkins+Maven+Git 生成jar包部署到远程服务器上

这篇具有很好参考价值的文章主要介绍了Jenkins+Maven+Git 生成jar包部署到远程服务器上。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、登录Jenkins

jenkins 部署jar到远程服务器,jenkins,maven,git

1.1 输入用户名/密码,登录Jenkins进入系统页面

jenkins 部署jar到远程服务器,jenkins,maven,git

 2、创建任务

jenkins 部署jar到远程服务器,jenkins,maven,git

2.1 点击左侧菜单中 “新建Item” 进入到新项目创建页面,创建一个新的构建任务

jenkins 部署jar到远程服务器,jenkins,maven,git

2.2 在任务创建页面,第一步,“输入一个任务名称”;第二步,任务类型点击“构建一个maven项目”;第三步,点击“确定”,此时,构建任务创建完成。

jenkins 部署jar到远程服务器,jenkins,maven,git

 2.3 任务创建完成后,系统页面自动跳转到任务配置页面;

jenkins 部署jar到远程服务器,jenkins,maven,git

 2.4 此时,在Jenkins首页可以看到刚刚创建的名称为les-service的构建任务,点击任务名称后面的下拉箭头,点击“配置”可以进入到步骤2.2中的构建任务配置页面。

 3 构建任务配置

3.1 General(全局配置):以下(1)(2)(3)(4)(5)操作都为非必输项,可以忽略掉,不影响任务的构建。

jenkins 部署jar到远程服务器,jenkins,maven,git

(1)描述:输入要部署到的远程服务器的信息,以及本次发布架包的信息;

(2)勾选Discard old builds(丢弃旧的构建版本),我这里要设置丢弃旧的构建版本信息;

(3)策略,选择Log Rotation(日志循环);

(4)“保持构建天数”中输入7,表示构建记录保存7天;

(5)“保持构建的最大个数”中输入7,表示最多保存7个构建记录;

 3.2 源码管理:主要填写GitLab上的项目源码信息

jenkins 部署jar到远程服务器,jenkins,maven,git

(1)勾选Git;

(2)输入“Repository URL”内容,填写GitLab上项目的仓库地址,如下GitLab截图中的序号2,复制地址输入到“Repository URL”中;

jenkins 部署jar到远程服务器,jenkins,maven,git

(3)点击Credentials下面的“添加”按钮,添加访问仓库项目的凭证(账号/密码),Domain(范围)选择“全局凭据”,后面创建该项目的前端构建任务时,可以复用;类型选择“Username with password”;“用户名”输入有访问该gitlab项目权限的用户名;“密码”用户的密码;点击下方“添加”按钮,凭据添加完成;

jenkins 部署jar到远程服务器,jenkins,maven,git

(4)选择Credentials访问仓库项目的凭证(gitlab用户名/密码)

(5)输入,GitLab上的分支,我这里是dev分支

 3.3 构建环境,非必填项;勾选“Provide Configuration files”和“Add timestamps to the Console Output”,选择File和输入Target,target输入要被替换的路径以及文件名称,路径写相对路径(即,构建项目包里面文件夹的路径);如果要替换多个文件,点击“Add file”继续添加文件

jenkins 部署jar到远程服务器,jenkins,maven,git

(1) 勾选“Provide Configuration files”(提供配置文件),可以替换构建包中配置文件,方便数据库、注册中等地址的修改,file的添加在 Dashboard-》Manage Jenkins-》Managed files中;

jenkins 部署jar到远程服务器,jenkins,maven,git

(2)点击"Add a new Config"添加一个新配置,选择“Cutom file”自由风格的文件(这个可以自由定义配置文件的扩展名),点击“Next”

jenkins 部署jar到远程服务器,jenkins,maven,git

 (3)“name”中输入配置文件的名称(随便取名,最好和项目中的一致方便识别),“Content”输入配置文件的内容,点击“Subimit”;jenkins 部署jar到远程服务器,jenkins,maven,git

3.4 Build构建,填写打包相关的信息

jenkins 部署jar到远程服务器,jenkins,maven,git

(1)Root POM,输入POM的根路径,根据项目的实际路径填写;

(2)Goals and options,目标选项中输入打包要执行的maven命令,输入clean package -Dmaven.test.skip=true(先清理掉以前的包,并跳过测试打包,这里可以打war包或jar包,存放在target目录下)

小扩展:-DskipTests 和 -Dmaven.test.skip=true 的区别

-DskipTests:不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下;

-Dmaven.test.skip=true:不执行测试用例,也不编译测试用例类;

 3.5 post step 构建后操作(pre step构建前操作)

jenkins 部署jar到远程服务器,jenkins,maven,git

(1)我这里选择“Run regardless or build result”,表示不管上面构建结构都运行(此处根据自己情况也可以选择其他选项);

(2)点击“Add post-build step”,增加构建够操作;

(3)选择“Send files or execute commands over SSH”,通过SSH发送文件或执行命令,弹出到传输设置信息

jenkins 部署jar到远程服务器,jenkins,maven,git

(4)name:选择一个要运行jar包的远程服务器;远程服务器配置如下3.5.1:

(5)Source files:jenkins工作目录下,打包好的jar包文件的路径,这里要写相对路径,开始不要加斜杠“/”(/var/lib/jenkins/workspace/les_service/ 下面的路径);

(6)Remove prefix:去掉Source file中的前缀;

(7)Remote directory:jar包要部署的远程服务器上位置的路径;

(8)Exec command:要执行的shell脚本

jenkins 部署jar到远程服务器,jenkins,maven,git

(9)点击“Add Transfer Set”可以添加多个jar传到服务器;

(10)在最后一个jar传输信息的Exec command中的shell命令框中 可执行命令的最上面加上 ./etc/profile 重新加载下环境变量,解决脚本不执行或找不到环境变量问题 ;

./service.sh为执行命令脚本文件,把service.sh脚本和jar放在同一文件夹下,

jenkins 部署jar到远程服务器,jenkins,maven,git

service.sh内容为:

#!/bin/sh
export GATEWAY=les-gateway.jar
export AUTH=les-auth.jar
export WMS=modules-wms-system.jar
export MASTERDATA=les-modules-masterData.jar
export LES=modules-les-system.jar
export JOB=les-modules-job.jar
export FILE=les-modules-file.jar

export GATEWAY_port=8080
export AUTH_port=9205
export WMS_port=9201
export MASTERDATA_port=8085
export LES_port=9203
export JOB_port=9211
export FILE_port=9300

case "$1" in

start) 
        ## 启动gateway
        echo "--------开始启动GATEWAY---------------"
        nohup java -jar $GATEWAY >/dev/null 2>&1 &
        GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`
        until [ -n "$GATEWAY_pid" ]
            do
              GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "GATEWAY pid is $GATEWAY_pid"    
        echo "---------GATEWAY 启动成功-----------"
 
        ## 启动auth
        echo "--------开始启动AUTH---------------"
        nohup java -jar $AUTH >/dev/null 2>&1 &
        AUTH_pid=`lsof -i:$AUTH_port|grep "LISTEN"|awk '{print $2}'`
        until [ -n "$AUTH_pid" ]
            do
              AUTH_pid=`lsof -i:$AUTH_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "AUTH pid is $AUTH_pid"     
        echo "---------AUTH 启动成功-----------"

		## 启动MASTERDATA
        echo "--------MASTERDATA 开始启动--------------"
        nohup java -jar $MASTERDATA >/dev/null 2>&1 &
        MASTERDATA_pid=`lsof -i:$MASTERDATA_port|grep "LISTEN"|awk '{print $2}'`
        until [ -n "$MASTERDATA_pid" ]
            do
              MASTERDATA_pid=`lsof -i:$MASTERDATA_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "MASTERDATA pid is $MASTERDATA_pid" 
        echo "--------MASTERDATA 启动成功--------------"
 
        ## 启动LES
        echo "--------开始启动LES---------------"
        nohup java -jar $LES >/dev/null 2>&1 &
        LES_pid=`lsof -i:$LES_port|grep "LISTEN"|awk '{print $2}'` 
        until [ -n "$LES_pid" ]
            do
              LES_pid=`lsof -i:$LES_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "LES pid is $LES_pid"      sleep 10
        echo "---------LES 启动成功-----------"
		
        ## 启动WMS
        echo "--------开始启动WMS---------------"
        nohup java -jar $WMS >/dev/null  2>&1 &
        WMS_pid=`lsof -i:$WMS_port|grep "LISTEN"|awk '{print $2}'`
        until [ -n "$WMS_pid" ]
            do
              WMS_pid=`lsof -i:$WMS_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "WMS pid is $WMS_pid"     
        echo "---------WMS 启动成功-----------"
        			
        ## 启动FILE
        echo "--------开始启动FILE---------------"
        nohup java -jar $FILE >/dev/null  2>&1 &
        FILE_pid=`lsof -i:$FILE_port|grep "LISTEN"|awk '{print $2}'`
        until [ -n "$FILE_pid" ]
            do
              FILE_pid=`lsof -i:$FILE_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "FILE pid is $FILE_pid"     
        echo "---------WMS 启动成功-----------"	
		## 启动JOB
        echo "--------开始启动JOB---------------"
        nohup java -jar $JOB >/dev/null  2>&1 &
        JOB_pid=`lsof -i:$JOB_port|grep "LISTEN"|awk '{print $2}'`
        until [ -n "$JOB_pid" ]
            do
              JOB_pid=`lsof -i:$JOB_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "JOB pid is $JOB_pid"     
        echo "---------JOB 启动成功-----------"
        
        echo "===startAll success==="
        ;;

 stop)
        
         P_ID=`ps -ef | grep -w $GATEWAY | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===GATEWAY process not exists or stop success"
        else
            kill -9 $P_ID
            echo "GATEWAY killed success"
        fi
         P_ID=`ps -ef | grep -w $FILE| grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===FILE|  process not exists or stop success"
        else
            kill -9 $P_ID
            echo "FILE|  killed success"
        fi
         P_ID=`ps -ef | grep -w $AUTH | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===AUTH process not exists or stop success"
        else
            kill -9 $P_ID
            echo "AUTH killed success"
        fi
         P_ID=`ps -ef | grep -w $WMS | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===WMS process not exists or stop success"
        else
            kill -9 $P_ID
            echo "WMS killed success"
        fi

	 P_ID=`ps -ef | grep -w $MASTERDATA | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===MASTERDATA process not exists or stop success"
        else
            kill -9 $P_ID
            echo "MASTERDATA killed success"
        fi
        P_ID=`ps -ef | grep -w $LES | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===LES process not exists or stop success"
        else
            kill -9 $P_ID
            echo "LES killed success"
        fi
		P_ID=`ps -ef | grep -w $JOB | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===JOB process not exists or stop success"
        else
            kill -9 $P_ID
            echo "JOB killed success"
        fi
		
        echo "===stop success==="
        ;;   
 
restart)
        $0 stop
        sleep 2
        $0 start
        echo "===restart success==="
        ;;   
esac    
exit 0

3.5.1 SSH私钥公钥配置

jenkins 部署jar到远程服务器,jenkins,maven,git

1、生成私钥和公钥,在Jenkins服务器下输入 ssh-keygen -t rsa

2、一路回车,可以看到私钥id_rsa 和 公钥id_rsa.pub 生成在/root/.ssh/文件夹下

3、把私钥id_rsa中的内容放在Jenkins中,公钥id_rsa.pub的内容放在远程服务器上的authorized_keys文件中

jenkins 部署jar到远程服务器,jenkins,maven,git

jenkins 部署jar到远程服务器,jenkins,maven,git

(1)把私钥id_rsa的内容复制到 Jenkins中,Dashboard->Manage Jenkins->Configure System 中的key下;Path to key下填写私钥的路径;

jenkins 部署jar到远程服务器,jenkins,maven,git

(2)在 Jenkins的Dashboard->Manage Jenkins->Configure System中配置远程服务器信息;信息配置完成后,点击“Test Configuration”测试连接情况,弹出“Success”说明配置成功

 name:服务器名称(根据自己习惯填写即可)

Hostname:服务器IP地址

Username:服务器登录用户名

Remote Directory:远程服务器上要部署包存放的位置(这里可以不填,在Jenkins任务的配置中填写也行,个人建议在任务的配置中填写,因为一个服务器可能部署多个包到多个位置)

(3)公钥id_rsa.pub放在远程服务器上的authorized_keys文件中,如果找不到authorized_keys这个文件,就在/root/.ssh/ 文件夹下创建这个文件,如果在远程服务器上找不到/root/.ssh/这个文件夹,直接在远程服务器上执行一下 ssh-keygen -t rsa,然后cd /root/.ssh/ 进入到该文件夹下执行 touch authorized_keys 创建authorized_keys文件,把公钥id_rsa.pub里的内容复制到authorized_keys文件中。

3.6 完成配置

jenkins 部署jar到远程服务器,jenkins,maven,git

 上述全部配置完成后,点击“保存”按钮,完成配置;

3.7 构建

jenkins 部署jar到远程服务器,jenkins,maven,git

 点击如图所示进行构建;

3.8 构建日志查看

jenkins 部署jar到远程服务器,jenkins,maven,git

jenkins 部署jar到远程服务器,jenkins,maven,git

(1)构建过程中的任务,直接点击左下角的进度条便可进入到控制台实时查看日志 

jenkins 部署jar到远程服务器,jenkins,maven,git

jenkins 部署jar到远程服务器,jenkins,maven,git

jenkins 部署jar到远程服务器,jenkins,maven,git

jenkins 部署jar到远程服务器,jenkins,maven,git (2)也可以直接点击 任务名称—》构建信息—》控制台输出,查看日志信息文章来源地址https://www.toymoban.com/news/detail-668094.html

到了这里,关于Jenkins+Maven+Git 生成jar包部署到远程服务器上的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins将构建生成的程序包部署到服务器(一)

    目前在用的是rsync+ssh 组合构建cicd: jenkins把程序包推送到服务器的几种方法 rsync+jenkins在同一台部署 /bin/sh /usr/local/deploy/rsync.sh $JOB_NAME $WORKSPACE /bin/sh /srv/salt/script/tomcat_restart.sh $JOB_NAME 这个脚本将: 从第一个参数获取项目名称 检查项目是否存在 如果存在,获取项目的IP地址 根据

    2024年02月10日
    浏览(26)
  • linux服务器部署jenkins+python+git部署讲解与git仓库的使用

    1.首先需要安装一下虚拟机:推荐使用 VMware 这个比较好用,如果不知道怎么安装可以根据下面的网站去看教程,很简单 【VMware 详细安装教程,亲测有效】-CSDN博客 2.安装好之后,可以使用 Xshell 去连接你得虚拟机,建议使用 Xshell 操作虚拟机,因为企业里面都是使用远程连接工

    2024年02月20日
    浏览(34)
  • 内网搭建Jenkins自动化远程部署项目到Windows服务器

    War Jenkins Packages 不赘述 一个小诀窍;去有外网的PC上面,部署Jenkins正常搜索插件安装,然后找到安装目录,有个.Jenkins的文件夹,里面有个plug的文件夹,这个就是我们所需所有插件,然后把它拷贝到内网中。  捷径(Jenkins2.346.1版本所需插件):https://download.csdn.net/download/b

    2024年02月17日
    浏览(31)
  • Gitee+Jenkins(docker版)自动推送并部署Springboot项目到远程服务器

    如果要参考gitlab配置请参考Gitlab+Webhook自动推送并更新Springboot项目 Gitlab的配置部分 Jenkins服务器(Centos7.6): docker安装的jenkins,参考Jenkins(docker安装)部署Springboot项目 JDK1.8 Maven3.6.3 注意docker安装的jenkins,而且是较新的版本,所以jenkins容器内的java版本是11的,而我的项目是基于JDK1.8的

    2024年02月13日
    浏览(32)
  • Jenkins配置远程服务器之Publish over SSH、SSH Servers、以及Linux系统生成RSA公私密钥

    场景: 1、Publish Over SSH 插件是通过SSH连接远程服务器,可以远程执行Shell命令或传输文件 2、有两种验证方式,密码方式和秘钥方式 3、前置条件:需要安装 Public over SSH 插件 一、密码验证方式 1、位置:Jenkins 》系统管理 》系统配置》Publish over SSH 2、添加 SSH Servers 远程路径

    2023年04月22日
    浏览(79)
  • Jenkins 执行远程shell脚本部署jar文件问题起不来

    如图:最开始的时候没有加: source /etc/profile 这一行, run.sh里面的java -jar xxxx.jar 一直执行不来。 一开始以为是Jenkins执行退出后会kill一切它启动的进程,所以加了在run.sh里面加了export BUILD_ID=dontKillMe,还是不行。后来考虑是环境变量问题,加上source /etc/profile就好了,同时最

    2024年02月07日
    浏览(37)
  • 史上最全从0到1搭建最新版本jenkins可持续集成,整合git和maven部署微服务自动构建发版,抓紧收藏起来吧!

    好文推荐: netty搭建websocket集群(高性能.,高并发) springboot 实现延时队列(超级实用) 2.5万字讲解DDD领域驱动设计(史上最全DDD) 传统的软件开发在系统上线的时候需要手动进行,这个过程可能相对繁琐和容易出错,发布过程如下: 代码构建:开发人员在本地环境中编写

    2024年04月13日
    浏览(33)
  • Jenkins发布windows服务器jar

    一、背景   之前是linux服务器部署的项目,现在转为windows服务器部署。jenkins和git都已经部署好了。所以本文只会重点讲Jenkins调用windows服务器bat命令及bat命令的编写概况。 二、详情操作 1、Jenkins调用windows bat文件 首先在Jenkins项目配置\\\"高级项目选项\\\"-pipeline scipt 填入脚本 脚本

    2024年02月08日
    浏览(31)
  • Jenkins构建自由风格项目发布jar到服务器

    前面的文章有介绍 docker安装jenkins 和 docker+jenkins发布spring项目;这里就不做过多的介绍,直接说明构建步骤。 1、选择构建一个自由风格的项目  2、 选择丢弃旧的构建  3、配置Git信息 4、构建触发器 和 构建环境可以直接跳过 5、直接来到Build Steps这步骤,先新增一个调用

    2024年02月13日
    浏览(28)
  • k8s服务部署核心流程:以Jenkins为核心,从Gitee拉取代码,然后进行maven构建,之后使用docker命令打镜像,并推送镜像到harbor仓库,之后远程调用k8s命令创建服务

    前提是我们在自己电脑上模拟整个流程。 假设我们需要搭建一主一从的k8s集群,那就需要安装VMvare和Centos7(点击我查看安装文档), 然后就可以在这两个虚拟机上搭建k8s集群了(点击我查看安装文档), 一个最简单的devops流程已经在标题中写明了, 其中可以搭建gitlab(点

    2024年02月02日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包