IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux 安装 Jenkins 实现项目自动化部署 -> 正文阅读

[系统运维]Linux 安装 Jenkins 实现项目自动化部署

一.为什么要使用Jenkins,到底有什么好处?

传统部署:通过maven命令:mvn clean install "-Dmanven.test.skip=true" -Pprod 将项目打一个jar,然后通过xftp上传到服务器,xshell上面启动项目(nohup java -jar xxxx.jar > xxxx.out 2>&1 & )通过上述操作,繁琐还容易出错。而 Jenkins 只需要你打开网页、选择已维护好的项目,点击构建就可以了。

二.安装Jenkins

? ?安装JDK??jdk 安装? ??

? 下载 Jenkins ,我们采用下载war?

? ?官网下载:Jenkins

? ??

?镜像下载:阿里云开源镜像站资源目录

?在服务器opt目录下创建一个jenkins目录,并把下载好的jenkins.war上传到这个目录下面?

?启动jenkins

nohup java -jar jenkins.war --httpPort=9090 >jenkins.out 2>&1 &  

?nohup 是为了关闭窗口 jenkons程序不关闭,httpPort 为jenkins指定 端口

三.jenkins设置

?浏览器打开 http:// 服务器IP :9090

?需要输入管理员密码,并提示你密码的存放位置

cat /root/.jenkins/secrets/initialAdminPassword

?

这个看情况选择:可以选择“安装推荐的插件”,也可以“选择插件安装”? 个人喜好自定义安装(选项2)

?

四.项目配置

?jenkins 全局配置:jdk、maven信息

设置JDK?? ? ?linux 安装JDK

?设置git (默认的就可以了)

?设置maven?? ? linux 安装 maven

设置SSH Servers

找到:publish-over-ssh 进行安装

然后在? "系统管理"? ->? "系统配置"? 中找到?SSH Servers? ?新增

?

如有多台服务器,就点击新增继续添加。

?设置linux执行脚本(如果嫌麻烦,也可以在 jenksin?SSH Publishers 里面设置,下面会介绍)

?先创建bin目录编写一个sh脚本(如果自己创建的txt修改的后缀名,需要注意编码格式UTF-8)

?脚本信息为:

#!/bin/bash
source /etc/profile
#遇到不存在的变量报错,并停止执行
set -o nounset
############# 全局变量定义 ##########
sedfun() { sed_a1=`echo $1 | awk -F '=' '{print $1}'` ; sed -i 's#^'$sed_a1'[[:space:]]*=.*#'"$1"'#g' ${File_Path} ; }

ObjectName=$1
JarName=$1.jar
#项目部署根目录
API_ROOT=/app/${ObjectName}
#项目jar临时上传目录
TMP_DIR=/app/${ObjectName}/tmp
##历史版本备份目录
SubjectBack=/app/${ObjectName}/backup
#Logs_Dir=/app/${ObjectName}/logs

echo "============[基础配置信息]==============="
java -version
echo "项目部署根目录:"${API_ROOT}
echo "项目JAR名称:"${JarName}
echo "项目JAR临时目录:"${TMP_DIR}
echo "项目历史备份目录:"${SubjectBack}
echo "======================================"

echo "============[发布项目开始]============"
if [ ! -d "${API_ROOT}" ]; then mkdir -p ${API_ROOT}; fi
if [ ! -d "${SubjectBack}" ]; then mkdir -p ${SubjectBack}; fi
#if [ ! -d "${Logs_Dir}" ]; then mkdir -p ${Logs_Dir}; fi

############### 关闭当前主机项目 ###################
echo "============[关闭服务开始]============"
PID=`ps -ef|grep java|grep "${JarName}"|grep -v grep|awk '{print $2}'`
if [ "${PID}" ];then ps -ef|grep java|grep "${JarName}"|grep -v grep|awk '{print $2}'|xargs kill -9;fi
echo "============[关闭服务完成]============"

################## 备份当前项目 ########################
echo "============[备份项目开始]============"
if [  -e "${API_ROOT}/${JarName}" ]; then mv -f ${API_ROOT}/${JarName} ${SubjectBack}/${JarName}; fi
if [  -e "${TMP_DIR}/${JarName}" ]; then mv -f ${TMP_DIR}/${JarName} ${API_ROOT}/${JarName}; fi
if [  -e "${SubjectBack}/${JarName}" ]; then cp -rf ${SubjectBack}/${JarName} ${SubjectBack}/${ObjectName}_`date +%Y-%m-%d-%H%M%S`.jar; fi
cd ${SubjectBack}&&ls -t ${SubjectBack} | awk '{if(NR>6){print $1}}'|xargs rm -f   #保留最近5个版本压缩文件
echo "============[备份项目完成]============"

############### 启动当前项目 ###################
#cd ${API_ROOT}&&nohup java -jar ${JarName} & ###后台执行无反馈结果
#jenkins中使用nohup须加上这句
#BUILD_ID=dontKillMe
echo "============[项目启动开始]============"
cd ${API_ROOT}&&nohup java -jar ${API_ROOT}/${JarName} >/dev/null 2>&1 &
echo "============[项目启动完成]============"

准备工作到此结束

五.设置项目

项目我们已 hello word?一. 创建一个简单的spring-boot项目,实现hello world? ?为例

1.新建item

2. 构建一个maven项目

?如果列表中没有 “构建一个maven项目” 选择?

?找到??Maven Integration Plugin 下载 安装好,重启即可。

3.基础设置

? ?选择丢弃旧的构建

?参数化构建过程

?如果选择中没有git参数(系统管理-插件管理->可选插件中找到git相关的安装)

在Branches to bulid 中使用上面配置好的git参数 指定分支填写:?${branch}

??4.设置 git 地址 这里已?创建一个简单的spring-boot项目,实现hello world? ? ?项目为例子

?Credentials 表示git 账号和密码,可以添加旁边的添加按钮,添加账号跟密码信息

5.设置打包命令?spring-boot-demo? 表示项目名称

clean package -Dmaven.test.skip=true

?6.设置路径

? ssh server name: 为上面准备工作中 ssh server中设置的,在这里只能选择

(原文件)Source files :?target/spring-boot-demo.jar

(删除前缀)Remove prefix :?target/

(远程目录)Remote directory:/app/spring-boot-demo/tmp

?注:我是提前创建好了,需要注意文件夹权限,权限过低jenkins会构建成功但项目没有启动

(执行命令)Exec command:

source /etc/profile
nohup sh /app/bin/restart.sh spring-boot-demo >/dev/null 2>&1 &

注意:如果不创建?restart.sh 就讲?restart.sh里面的内容复制粘贴到? Exec command 中

如果你的项目做了负载均衡,部署在两台服务器上面,可以点击add server 继续添加

六 .从jenkins 启动项目,测试

配置好,可以在列表中查看配置的项目

进入项目管理界面,可以构建项目、修改、删除等项目?

这里选择分支有什么作用了?

一般项目会分为(master)主干分支、(develop) 开发分支、(release)预发布分布等便于管理

点击立即构建->选择控制台输出->查看一下日志

?日志显示构建成功,并且成功上传一个文件到另外一台服务器

? 为了清楚展示,使用xftp展示目录结构

?查看服务是否启动

?通过postman 访问查看

?服务访问成功

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:32:30  更:2022-04-01 00:34:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:32:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码