论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
运维.售后
›
运维.售后
›
Jenkins详细使用教程
Jenkins详细使用教程
渣渣兔
金牌会员
|
2024-8-23 22:38:26
|
显示全部楼层
|
阅读模式
楼主
主题
977
|
帖子
977
|
积分
2931
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
目次
1. 什么是Jenkins?
2. 为什么使用Jenkins?
3. 安装Jenkins
3.1 下载相干文件
3.2 解压Linux版本的JDK
3.3 设置JDK环境
3.4 运行jenkins.war
3.5 安装完成
4. 访问Jenkins
5. 修改密码
6. 集成JDK
7. Jenkins集成Git
7.1 使用Jenkins拉取Git仓库中的代码
8. Jenkins集成Maven
8.1 在Jenkins所在的服务器安装Maven
8.2 设置环境变量
8.3 修改maven设置文件(当地仓库和阿里云远程仓库所在)
8.4 Jenkins拉取Maven项目
8.4.1 安装maven插件
8.4.2 jenkins集成maven软件
9. 自动拉取
9.1 表里穿透
9.2 jenkins安装gitee插件
9.3 修改item使命的设置
9.4 修改gitee仓库的设置
10. 自动化摆设
10.1 免密复制操作
10.2 在Jenins远程复制的脚本
10.3 启动项目标shell脚本
10.4 关闭的脚本
10.5 在jenkins设置中引入关闭和启动脚本
1. 什么是Jenkins?
Jenkins是一个开源软件项目,是基于Java开发的一种连续集成工具,
用于监控连续重复的工作
,旨在提供一个开放易用的软件平台,使软件项目可以举行连续集成。
2. 为什么使用Jenkins?
总的来说就是当你在idea写好代码上传到git上,jenkins帮你拉取文件,并且可以摆设到Linux上,以便于测试。
3. 安装Jenkins
必须在linux体系上安装了jdk,而且jdk的版本是[11~20)之间。如果你的jdk版本是8的话,前面统统正常,但到了背面安装插件就会报错。
3.1 下载相干文件
http://mirrors.jenkins.io/war-stable/latest/jenkins.war
3.2
解压Linux版本的JDK
tar -zxvf xxxx.tar.gz
复制代码
3.3
设置JDK环境
vi /etc/profile
在文件的末了加上:export JAVA_HOME=/usr/app/jdk17
export PATH=$JAVA_HOME/bin
PATH
环境设置好后:source /etc/profile。
先运行
yum install fontconfig:
fontconfig 是一个机动的字体设置和选择体系,用于定制字体查找规则并提高字体的可访问性和可读性。
3.4
运行jenkins.war
nohup java -jar /usr/app/jenkins.war --httpPort=8777 >/usr/app/jenkins.log 2>&1 &
复制代码
上面命令是在Linux体系中以背景方式启动Java应用程序(具体来说是Jenkins)而不占用终端会话。
nohup:这个命令意味着“不挂断”。它使得启动的进程不会因为终端会话竣事而被终止。
java -jar /usr/app/jenkins.war:这部分启动了Java应用程序。java -jar是运行Java Web应用程序的标准方式,/usr/app/jenkins.war是Jenkins应用的WAR文件路径。
--httpPort=8777:这是通报给Jenkins应用的一个参数,指定了HTTP服务监听的端口为8777。
>/usr/app/jenkins.log:这将标准输出重定向到/usr/app/jenkins.log文件,记载Jenkins运行时的全部输出信息。
2>&1:这将标准错误输出(通常为文件形貌符2)重定向到与标准输出类似的地方(这里是指向jenkins.log)。这样做的目标是将全部输出(包罗错误信息)都归并到同一个日记文件中。
&:末了的符号&表示命令应该在背景运行,立即返回控制台,使用户可以继续实行其他命令,而Jenkins应用则在背景连续运行。
3.5 安装完成
查看日记:
tail -100 jenkins.log
复制代码
出现下面这种,阐明安装完成。
4. 访问Jenkins
即可访问jenkins安装的Linux的所在:8777:
运行得到管理员密码:
等待安装全部需要的依靠:
等待进度条满:
创建用户:
5. 修改密码
在页面下方有password。
6. 集成JDK
找到Tools:
添加JDK:
7. Jenkins集成Git
因为jenkins自动从git远程仓库拉取代码,以是要在jenkins所在的服务器上安装git。
yum install -y git
复制代码
再找到Tools:
找到Git:
如果你的Linux安装了git这里就不会报红了。
7.1
使用Jenkins拉取Git仓库中的代码
创建Item:
完成新建:
创建完毕后,找到源码管理:
输入你的仓库所在:
添加jenkins:
填写好后,点至生存:
现在jenkins无法自动拉取代码。(当仓库中的代码发生改变时无法自动拉取)
结果:
8. Jenkins集成Maven
由于Jenkins自己不能对代码举行打包,以是我们需要集成maven,而且我们的项目几乎100%都是maven构建的项目。
8.1
在Jenkins所在的服务器安装Maven
8.2
设置环境变量
vi /etc/profile
在文件的末了加上:export MAVEN_HOME=安装路径
export PATH=$MAVEN_HOME/bin
PATH
环境设置好后:source /etc/profile
查看:
8.3 修改
maven设置文件(当地仓库和阿里云远程仓库所在)
8.4 J
enkins拉取Maven项目
8.4.1 安装maven插件
8.4.2
jenkins集成maven软件
找到Git,设置Git:
9. 自动拉取
gitee仓库的代码,默认
gitee不允许内网拉取
。这里计划一个知识点叫做
内网穿透
。
9.1 表里穿透
通常个人电脑无论是毗连WIFI上网还是用网线上网,都是属于局域网里边的,外网无法直接访问到你的电脑,内网穿透可以让你的局域网中的电脑实现外网访问功能。
使用nat:
NATAPP1分钟快速新手图文教程 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具
9.2 jenkins安装gitee插件
9.3
修改item使命的设置
天生Gitee WebHook 密码:
9.4
修改gitee仓库的设置
添加WebHook:
10. 自动化摆设
用shell脚本。
jenkins软件需要大量集成第三方很多软件(maven、git、jdk...),如果我们的项目也摆设到该服务器下,势必导致项目性能弱。
以是把jenkins所在的服务下打包好的项目远程复制到其他服务器上,在其他服务器举行项目标启动和关闭。
scp xxx.jar root@远程ip:/远程路径
第一次摆设的时候需要输入密码。
10.1
免密复制操作
设置ssh免密登录
免密登录紧张是方便
jenkins服务器
的root用户到
应用服务器
的root用户上的jar包拷贝,摆设本就是jar包拷贝的过程。
在
jenkins服务器
上使用root用户天生秘钥留意此处是root用户。
$ ssh-keygen -t rsa
# 3次回车
复制代码
运行后会在当前用户的根目次天生一个
.ssh文件夹
。
ssh文件夹中的文件形貌
id_rsa : 天生的私钥文件
id_rsa.pub : 天生的公钥文件
接下来需要将公钥导入到认证文件中:
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
复制代码
如果希望ssh公钥生效需满足至少下面两个条件:
.ssh目次的权限必须是700
.ssh/authorized_keys文件权限必须是600
给对应文件授权:
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
复制代码
将authorized_keys文件拷贝到另一台应用服务器的root用户.ssh目次下:
在
应用服务器
上用root用户创建/root/.ssh文件夹 mkdir -p /root/.ssh
在
jenkins服务器
上将pub公钥文件拷贝到应用服务器的.ssh目次下
scp -p ~/.ssh/id_rsa.pub root@
应用服务器ip
:/root/.ssh/authorized_keys
在
jenkins服务器
上举行免密毗连测试:
ssh
应用服务器ip
总结:
在jenkin所在的服务器使用ssh-keygen -t rsa。
把公钥加载到认证文件中cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys。
修改.ssh [700]和authorized_keys [600]的权限。
把jenkins服务器上公钥远程复制到免密的服务器上。mkdir -p /root/.ssh scp -p ~/.ssh/id_rsa.pub root@应用服务器ip:/root/.ssh/authorized_keys。
10.2 在Jenins远程复制的脚本
#!/bin/bash
echo "部署的目录和项目名称"
DIR="/data/app"
projectName="my-boot"
echo "待部署的应用服务器,可多台"
# 部署项目的ip
server_ips="xxxxxxxx"
for server_ip in ${server_ips[@]}
do
echo "ssh连接进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mkdir -p $DIR/backup/${projectName}
mkdir -p $DIR/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar
fi
EOF
echo "拷贝jar包到目标服务器的tmp目录"
scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jar
echo "ssh远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar
EOF
done
echo "success"
复制代码
作用:把jenkins打包的jar远程copy到指定的服务器下。
10.3
启动项目标shell脚本
#!/bin/bash
APP_ID="my-boot"
APP_DIR="/data/app"
nohup java -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log &
start_ok=false
if [[ $? = 0 ]];then
sleep 3
tail -n 10 release_out.log
sleep 5
tail -n 50 release_out.log
fi
aaa=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${aaa}" ]];then
echo "Application started ok"
exit 0
else
echo "Application started error"
exit 1
fi
复制代码
10.4
关闭的脚本
#!/bin/bash
APP_ID=my-boot
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
复制代码
10.5
在jenkins设置中引入关闭和启动脚本
sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.sh
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
渣渣兔
金牌会员
这个人很懒什么都没写!
楼主热帖
SqlServer2012升级到SqlServer2016
事务的ACID特性
深度干货!一篇Paper带您读懂HTAP | St ...
DCM: 中间件家族迎来新成员
iOS事件传递链与响应链
(内附源码)Node.js小试——使用Node ...
arthas使用介绍
SaaS软件工程师成长路径
go-zero单体服务使用泛型简化注册Handl ...
.NET for Apache Spark 入门演练
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
分布式数据库
云原生
前端开发
Oracle
.Net
快速回复
返回顶部
返回列表