jekins的安装使用

1. 什么是Jenkins?

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于
监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以
进行(持续集成)

2. 为什么要使用jenkins

在这里插入图片描述

3. 如何安装jenkins

3.1 下载jenkins的安装包

https://get.jenkins.io/war-stable/2.164.1/

3.2 把该文件放入到linux系统并运行

nohup java -jar /usr/local/jenkins.war --httpPort=8777 > /usr/local/jenkins.log 2>&1 &

nohup: 当服务器休眠时 改软件还在运行
java -jar: 执行war或jar文件
–httpPort: http的端口号
&: 后台运行

在这里插入图片描述

3.3 访问jenkins

http://192.168.0.110:8777/
在这里插入图片描述

cat /root/.jenkins/secrets/initialAdminPassword
初始获取密码登录
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4 修改密码

在这里插入图片描述

4. jenkins集成jdk

因为我们的项目通过jenkins从gitee拉取后需要编译。—javac. 所以
jenkins需要集成jdk
(1)在jenkins所在的服务器安装jdk并配置环境变量
在这里插入图片描述
(2)集成jdk
在这里插入图片描述

5. jenkins集成git

因为jenkins需要从远程仓库拉取代码 所以需要集成git
(1)在jenkins所在的服务器安装git

yum install -y git

(2)jenkins集成安装的git
在这里插入图片描述
在这里插入图片描述
3)jenkins中创建任务–
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
拉取编译项目
在这里插入图片描述
在这里插入图片描述
查看linux服务器中拉取的代码
在这里插入图片描述

7. jenkins集成maven

我们现在很多项目都是maven的项目架构,所以我们jenkins从远程仓
库拉取的代码必须有maven管理依赖jar包
(1)jenkins所在的服务器安装maven并解压
在这里插入图片描述
在这里插入图片描述
(2)配置环境变量
在这里插入图片描述
重新加载
在这里插入图片描述
查看有没有配置成功
在这里插入图片描述
(3) 修改maven的配置文件–镜像—本地仓库地址
在这里插入图片描述

在这里插入图片描述
(4)jenkins集成maven
在这里插入图片描述
安装maven的插件
在这里插入图片描述
在git上创建一个仓库并上传maven项目
在jenkins创建任务项
在这里插入图片描述
1.jenkins自动拉取git仓库的代码
1)安装gitee插件到jenkins
在这里插入图片描述
(2)修改任务项
在这里插入图片描述在这里插入图片描述
gitee默认不允许内网触发。----必须要配置内网穿透
在这里插入图片描述
修改gitee远程仓库
在这里插入图片描述
测试:
修改idea中的代码并提交到gitee上,会自动触发jenkins—拉取–编译—打包

8. 完成自动化部署

思考: 我们的项目和jenkins是不是都在一台服务器上。 因为jenkins它
所在的服务器非常耗费资源,因为jenkins本身要集成很多软件。如果
这时项目也部署到当作jenkins所在的服务器,势必会导致项目在后期
运行时由于资源不够,而导致无法运行。 所以我们的项目需要单独再
一个服务器运行。
思考: jenkins打包好的项目jar在自己所在的服务器,而项目运行需要
在其他服务器。需要把jenkins上打包好的jar复制到其他服务器。cp只
能在本机进行复制。 scp 远程复制

scp demo1111-0.0.1-SNAPSHOT.jar root@192.168.0.111:/

scp:远程复制的命令
demo111: 被复制的文件
root@远程的ip:/远程的目录

我们再远程复制时需要输入另一台服务器167的密码. 由于后期需要
jenkins软件帮你完成远程的复制功能。所以我们需要设置111这台服
务免密操作。

2.2 设置免密操作

(1)再110生成密钥

ssh-keygen -t rsa --一直回车

在这里插入图片描述
(2)接下来需要将公钥导入到认证文件中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

(3)如果希望ssh公钥生效需满足至少下面两个条件:

.ssh目录的权限必须是700 r4 w2 x1
.ssh/authorized_keys 文件权限必须是600

给对应文件授权

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

将authorized_keys文件拷贝到另一台应用服务器的root用户.ssh目录下

在应用服务器(192.168.0.111)上用root用户创建/root/.ssh
文件夹 mkdir -p /root/.ssh
在jenkins服务器(192.168.0.110)上将pub公钥文件拷贝到应用
服务器的.ssh目录下
scp -p ~/.ssh/id_rsa.pub root@192.168.0.111:/root/.ssh/authorized_keys

8.3 如何自动把jenkins服务器的jar复制到应用服务器上。

#!/bin/bash
echo “部署的目录和项目名称”
DIR=“/data/app”
projectName=“my-boot”
echo “待部署的应用服务器,可多台”
server_ips=“192.168.223.167”
for server_ip in s e r v e r i p s [ @ ] d o e c h o " s s h 连接进行备份操作 " s s h − T q − o S t r i c t H o s t K e y C h e c k i n g = n o r o o t @ {server_ips[@]} do echo "ssh连接进行备份操作" ssh -Tq -oStrictHostKeyChecking=no root@ serverips[@]doecho"ssh连接进行备份操作"sshTqoStrictHostKeyChecking=noroot@{server_ip}
<<EOF
mkdir -p D I R / b a c k u p / DIR/backup/ DIR/backup/{projectName}
mkdir -p D I R / DIR/ DIR/{projectName}
if [ -f “ D I R / DIR/ DIR/{projectName}/${projectName}.jar”
];then
mv D I R / DIR/ DIR/{projectName}/${projectName}.jar
D I R / b a c k u p / DIR/backup/ DIR/backup/{projectName}/${projectName}-date "+%Y%m%d_%H%M%S".jar
fi
EOF
echo “拷贝jar包到目标服务器的tmp目录”
scp -q -oStrictHostKeyChecking=no
W O R K S P A C E / t a r g e t / ∗ . j a r r o o t @ {WORKSPACE}/target/*.jar root@ WORKSPACE/target/.jarroot@{server_ip}:/tmp/ p r o j e c t N a m e . j a r e c h o " s s h 远程连接进行发布操作 " s s h − q − o S t r i c t H o s t K e y C h e c k i n g = n o r o o t @ {projectName}.jar echo "ssh远程连接进行发布操作" ssh -q -oStrictHostKeyChecking=no root@ projectName.jarecho"ssh远程连接进行发布操作"sshqoStrictHostKeyChecking=noroot@{server_ip}
<<EOF
mv /tmp/${projectName}.jar
D I R / DIR/ DIR/{projectName}/${projectName}.jar
EOF
done
echo “success”

在这里插入图片描述
把上面的shell脚本粘贴到下面
在这里插入图片描述
111启动jar项目
创建一个启动脚本
(1)编写项目的启动脚本

touch start.sh
vi start.sh
把下面的内容放入start.sh中

#!/bin/bash
set -e #任何命令出错就退出
set -o pipefail
APP_ID=my-boot
APP_DIR=“/data/app”
nohup java -jar A P P D I R / {APP_DIR}/ APPDIR/{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

在这里插入图片描述
关闭脚本

touch stop.sh
vi stop.sh
把下面的内容放入stop.sh中

#!/bin/bash
APP_ID=my-boot
ps aux | grep ${APP_ID} | grep -v “grep” | awk ‘{print
"kill -9 "$2}’ | sh

修改jenkins的权限

在这里插入图片描述

jenkins完成自动化拉取—编译—打包----部署----

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值