Jenkins部署项目

一.安装jenkins

1.1进入jenkins官网下载jenkins war包,上传到服务器/usr/local目录。

1.2执行启动jenkins命令,(注意jenkins版本需要的jdk版本)

/usr/local/java11/bin/java -Djava.awt.headless=true -jar /usr/local/jenkins.war --webroot=/jenkins/war --httpPort=8020

 1.3 访问Jenkins页面: http://ip:8020

二.安装git拉取项目

2.1 服务器安装git,执行安装命令

yum install git

2.2 将项目clone到本地

#创建项目文件夹

mkdir -p /data/summarize/git

cd /data/summarize/git

git clone http://xxx/summarize.git

 2.3 需要保存git用户密码,执行以下命令再次输入git账号密码

git config --global credential.helper store

git pull

 2.4 创建jar目录,用于放入jenkins打包的jar,并在该目录下创建启动脚本

mkdir -p /data/summarize/jar

编写shart.sh脚本 

cd  /data/summarize/jar

vim start.sh

脚本内容 

#jar名称
Tag="summarize-0.0.1-SNAPSHOT.jar"
# 检查进程状态
pid=$(ps -ef | grep -v 'grep' | egrep $Tag| awk '{printf $2 " "}')
if [ "$pid" != "" ]; then      
  echo -n "boot ( pid $pid) is running" 
  echo 
  echo -n $"Shutting down boot: "
  pid=$(ps -ef | grep -v 'grep' | egrep $Tag| awk '{printf $2 " "}')
  if [ "$pid" != "" ]; then
    echo "kill boot process"
    # kill  "$pid"
    kill -9 "$pid"
  fi
else 
   echo "boot is stopped" 
fi
# 启动项目
nohup java   -Dappliction=$Tag -jar $Tag  > console.out 2>&1   &

 三.Jenkins配置

3.1 全局属性环境变量,添加如下配置,该配置解决执行start.sh脚本不生效问题 

 

 3.2 配置jenkins任务,选择自由风格

完整配置如下,其它都不用管。

 shell脚本内容,maven需要提前上传到/usr/local目录,配置settings.xml文件。

#进入项目目录

cd /data/summarize/git/summarize

#同步最新代码
git pull

#maven打包
/usr/local/maven/bin/mvn clean install -Dmaven.test.skip=true

#移动打包的jar到目录
mv target/summarize-0.0.1-SNAPSHOT.jar /data/summarize/jar/

#进入目录
cd /data/summarize/jar
chmod 777 start.sh

#启动脚本
sh start.sh

保存之后构建即可自动化部署服务了。 

四.多台服务器部署服务

在生产环境中,服务部署需要同时部署到多台服务器并启动,那么该如何操作呢?其实只需要改下jenkins配置脚本内容,添加rsync命令同步文件夹到其它服务器,ssh远程连接执行脚本即可。(注:服务器之间需要提前配置免密登录)

#进入项目目录

cd /data/summarize/git/summarize

#同步最新代码
git pull

#maven打包
/usr/local/maven/bin/mvn clean install -Dmaven.test.skip=true

#移动打包的jar到目录
mv target/summarize-0.0.1-SNAPSHOT.jar /data/summarize/jar/

#同步目录到远程服务器

rsync -avr /data/summarize/jar root@47.109.145.59:/data/summarize/

#远程连接,进入目录启动脚本

ssh root@47.109.145.59 "cd /data/summarize/jar; sh start.sh; "

#进入本地目录
cd /data/summarize/jar
chmod 777 start.sh

#启动脚本
sh start.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/287213.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Navicat、Microsoft SQL Server Management Studio设置ID自增

一、Navicat中mysql数据库设置Id自增 (1)第一步 (2)第二步 二、Microsoft SQL Server Management Studio中Sqlservice数据库Id自增 (1)第一步 (2)第二步 (3&#xff09…

ICP算法在三维点云拼接中的全面解析

原创 | 文 BFT机器人 引言 随着数字化技术的飞速发展,三维点云拼接技术在众多领域中发挥着关键作用,特别是在逆向工程、计算机视觉、模式识别、医学影像等领域。在点云拼接的众多算法中,ICP(Iterative Closest Point)算…

解决jenkins的Exec command命令不生效,或者执行停不下来的问题

Jenkins构建完后将war包通过 Publish Over SSH 的插件发布到服务器上,在服务器上执行脚本时,脚本中的 nohup 命令无法执行,并不生效,我配置的Exec command命令是后台启动一个war包,并输出日志文件。 nohup java -jar /…

【react-taro-canvas】用canvas手写一个数字、字母混合的行为验证码

用canvas手写一个数字、字母混合的行为验证码 实现效果源码 实现效果 源码 import Taro from "tarojs/taro"; import { View, Canvas, Input, Button } from "tarojs/components"; import { useState, useEffect } from "react"; // 画随机线函…

开源云存储平台SeaFile本地搭建并结合内网穿透实现公网访问

文章目录 1. 前言2. SeaFile云盘设置2.1 SeaFile的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 现在我们身边的只能设备越来越多,…

LeetCode每日一题.06(翻转二叉树)

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root [2,1,3] 输出:[2,3,1] 示例 3&…

[每周一更]-(第51期):Go的调度器GMP

参考文献 https://learnku.com/articles/41728http://go.cyub.vip/gmp/gmp-model.html#g-m-phttps://blog.csdn.net/ByteDanceTech/article/details/129292683https://www.ququ123.top/2022/04/golang_gmp_principle/ 什么是GMP? GMP模型是Go语言并发模型的核心概念&#x…

ARM CCA机密计算架构软件栈之软件组件介绍

在本节中,您将了解Arm CCA的软件组件,包括Realm World和Monitor Root World。以下图表展示了Arm CCA系统中的软件组件: 在这个图表中,世界之间的边界显示为粗虚线。由较高权限的软件强制执行的较低权限软件组件之间的边界显示为细虚线。例如,非安全EL2处的虚拟机监视器强制…

QT上位机开发(会员管理软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们学习了ini文件的解析办法,通过QSettings类就可以很轻松地访问ini文件里面的数据。除了ini文件之外,另外一种经常出…

什么是数据销毁,为什么数据销毁很重要

当大多数人听到“数据破坏”时,他们的脸上都会表现出恐惧的表情。世界上大多数人最不想要的就是销毁他们计算机或移动设备上的数据。但现实情况是,无论您是大型、中型还是小型企业的所有者,总有一天您需要移除或更换旧媒体,并且您…

SpringBoot学习(二)-SpringBoot Web 开发

注:此为笔者学习狂神说SpringBoot的笔记,其中包含个人的笔记和理解,仅做学习笔记之用,更多详细资讯请出门左拐B站:狂神说!!! SpringBoot Web 开发 1、静态资源 1)创建项目 2)做项目都先测试一…

[每周一更]-(第52期):Go的函数式编程

参考地址 https://hedzr.com/golang/fp/golang-functional-programming-in-brief/https://silverrainz.me/blog/funtional-programming-in-go-generics.htmlhttps://zhuanlan.zhihu.com/p/436468481 函数式编程(Functional Programming / FP)作为一种编…

解决实用编程题目:单词拆分和分割等和子集--动态规划方式深度呈现

139. 单词拆分 题目描述 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s "lee…

OpenCV图像处理——C++实现亚像素尺寸标定板边缘轮廓提取

前言 标定模板(Calibration Target)在机器视觉、图像测量、摄影测量以及三维重建等应用中起着重要的作用。它被用于校正相机的畸变,确定物理尺寸和像素之间的换算关系,并建立相机成像的几何模型。通过使用相机拍摄带有固定间距图…

JavaScript中的数据缓存与内存泄露:解密前端性能优化与代码健康

​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-数据缓存与内存泄露 目录 说说你对事件循环的理解 一、是什么 二、宏…

Linux操作系统基础(7):Linux的文件路径

1. Linux文件路径的介绍 在Linux系统中,文件路径是用来定位文件或目录在文件系统中位置的一种表示方法,它能够帮助用户快速、准确地定位文件或目录,并进行相应的操作。 文件路径可以分为 绝对路径 和 相对路径 两种类型: 绝对路…

H266/VVC熵编码技术概述

熵编码 熵编码: 是指按信息熵原理进行的无损编码方式,无损熵编码也是有损视频编码中的一个关键模块,它处于视频压缩系统的最末端。熵编码把一列系用来表示视频序列的元素符号转变为一个用来传输或存储的压缩码流,输入的符号可能包…

提高开发效率的必备!超实用的VSCode插件推荐

前言 作为一个前端程序猿,我经常使用 VSCode 代码编辑器,但是每个开发者都有自己独特的工作风格和偏好。为了满足不同开发者的需求,VSCode 提供了丰富的插件生态系统。在本文中,我将为大家推荐一些强大的 VSCode 插件,…

Linux学习之系统编程3(进程及wait函数)

写在前面: 我的Linux的学习之路非常坎坷。第一次学习Linux是在大一下的开学没多久,结果因为不会安装VMware就无疾而终了,可以说是没开始就失败了。第二次学习Linux是在大一下快放暑假(那个时候刚刚过完考试周)&#xf…

SpringFrameWork

SpringFrameWork简介 介绍springFrameWork框架 Spring Framework是一个为企业级应用程序开发提供全面基础设施支持的开源框架,通过集成IoC、DI和AOP等技术,使得应用程序的开发更加灵活、可维护和可扩展。Spring MVC、SpringBoot、Spring Cloud、Spring D…