Redis-jenkins

news2024/9/19 9:45:54

1. 什么是jenkins

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

2. 为什么使用jenkins

使用 Jenkins之前使用 Jenkins之后
一旦所有开发人员都完成了分配的编码任务,他们通常会同时提交所有代码。后来测试并部署了Build,构建了代码提交,并且测试周期非常少,并且几天后就完成了一次构建。一旦开发人员提交代码,便会构建并测试代码。 Jenkin将在一天中多次构建和测试代码,如果构建成功,则Jenkins将源代码部署到测试服务器中并通知部署团队;如果构建失败,则Jenkins将错误通知开发人员团队。
由于代码是一次构建的,因此一些开发人员需要等到其他开发人员完成编码才能检查其构建在任何开发人员提交之后,将立即构建代码。
隔离,检测和修复多个提交的错误并非易事。由于代码是在单个开发人员的每次提交之后构建的,因此很容易检测出导致构建失败的代码
代码构建和测试过程完全是手动的,因此有很多失败的机会。自动化的构建和测试过程可节省时间并减少缺陷。
修复并测试所有错误后,将部署代码。每次成功构建和测试后,都将部署代码。
开发周期慢开发周期很快。新功能更易于用户使用。增加利润。

3. 安装jenkins

必须在linux系统上安装了jdk 而且jdk的版本是[11~20)之间

http://mirrors.jenkins.io/war-stable/latest/jenkins.war

解压

tar -zxvf xxxx.tar.gz

配置jdk环境

vi /etc/profile
-----------------------------------------------------
export JAVA_HOME=/usr/app/jdk17
export PATH=$JAVA_HOME/bin:$PATH
​
​
source /etc/profile

yum install fontconfig

运行jenkins.war

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

nohup: 系统休眠时服务依然运行

java -jar: 运行java的jar|war包

--httpPort=8777 : 指定端口号 http协议

→:表示管道 项目启动时的日志输入的该日志文件中

&: 后台运行

查看日志

tail -100 jenkins.log

修改密码

4. 集成jdk

5. jenkins集成git

因为jenkins自动从git远程仓库拉取代码。

jenkins所在的服务器上安装git

在虚拟机上运行yum install -y git

使用jenkins拉取git仓库中的代码

现在jenkins无法自动拉取代码。【当仓库中的代码发生改变时无法自动拉取】

6. jenkins集成maven

由于jenkins本身不能对代码进行打包。所以我们需要集成maven. 而且我们的项目100%都是maven构建的项目。

在jenkins所在的服务器安装maven

配置环境变量

vi /etc/profile

export MAVEN_HOME=安装路径
export PATH=$MAVEN_HOME/bin:$PATH

source /etc/profile

maven配置文件[本地仓库和阿里云远程仓库地址]

jenkins拉取maven项目

1.安装maven插件

jenkins集成maven软件

7. 自动拉取

gitee仓库的代码---默认gitee不允许内网拉取。

内网穿透

nat

NATAPP1分钟快速新手图文教程 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具

jenkins安装gitee插件

修改item任务的配置

往下拉有个生成密码的 点击生成会有一个密码 复制下来

修改gitee仓库的配置

测试

远程仓库代码改变----

8. 自动化部署

shell脚本

jenkins软件需要大量集成第三方很多软件[maven git jdk] 如果我们的项目也部署到该服务器下,势必导致项目性能弱。

把jenkins所在的服务下打包好的项目远程复制到其他服务器上。在其他服务器进行项目的启动和关闭。

scp xxx.jar  root@远程ip:/远程路径
​
需要输入密码:

免密复制操作

配置ssh免密登录

免密登录主要是方便jenkins服务器192.168.223.128的root用户—》应用服务器192.168.223.129的root用户上的jar包拷贝,部署本就是jar包拷贝的过程

在192.168.223.132 【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目录下

```
# 在应用服务器(192.168.111.188)上用root用户创建/root/.ssh文件夹  mkdir -p /root/.ssh

# 在jenkins服务器(192.168.111.132)上将pub公钥文件拷贝到应用服务器的.ssh目录下

scp -p ~/.ssh/id_rsa.pub root@192.168.111.188:/root/.ssh/authorized_keys
```

在jenkins192.168.111.132服务器上进行免密连接测试

```
ssh 192.168.111.188
```

总结: 

```
1. 在jenkin所在的服务器使用ssh-keygen -t rsa
2. 把公钥加载到认证文件中cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. 修改.ssh [700]和authorized_keys [600]的权限.
4. 把jenkins服务器上公钥远程复制到免密的服务器上。mkdir -p /root/.ssh
    scp -p ~/.ssh/id_rsa.pub root@192.168.111.188:/root/.ssh/authorized_keys
```

**远程复制的脚本**

#!/bin/bash

echo "部署的目录和项目名称"
DIR="/data/app"
projectName="my-boot"

echo "待部署的应用服务器,可多台"
# 部署项目的ip 
server_ips="192.168.111.188"
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"

server_ips="192.168.111.188"这个要改成自己的id

启动项目

脚本

#!/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

关闭的脚本

#!/bin/bash

APP_ID=my-boot
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

在jenkins配置中引入关闭和启动脚本

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【图形图像-1】SDF

在图形图像处理中&#xff0c;SDF&#xff08;Signed Distance Field&#xff0c;带符号的距离场&#xff09;是一种表示图形轮廓和空间距离的数学结构。它通常用于计算机图形学、文本渲染、碰撞检测和物理模拟等领域。 SDF&#xff08;Signed Distance Field&#xff0c;带符号…

白鲸开源CEO郭炜荣获「2024中国数智化转型升级先锋人物」称号

2024年7月24日&#xff0c;由数据猿主办&#xff0c;IDC协办&#xff0c;新华社中国经济信息社、上海大数据联盟、上海市数商协会、上海超级计算中心作为支持单位&#xff0c;举办“数智新质力拓未来 2024企业数智化转型升级发展论坛——暨AI大模型趋势论坛”数据猿“年中特别策…

.h264 .h265 压缩率的直观感受

1.资源文件 https://download.csdn.net/download/twicave/89579327 上面是.264 .265和原始的YUV420文件&#xff0c;各自的大小。 2.转换工具&#xff1a; 2.1 .h264 .h265互转 可以使用ffmpeg工具&#xff1a;Builds - CODEX FFMPEG gyan.dev 命令行参数&#xff1a; …

二叉树详解-第四篇 二叉树链式结构的实现

目录 1.二叉树的遍历 1.1前序遍历&#xff1a; 1.2 中序遍历&#xff1a; 1.3 后序遍历&#xff1a; 2.二叉树链式结构的实现 2.1 Tree.h 2.2 Tree.cpp 2.2.1 前序遍历 void PreOrder(TNode* Root) 2.2.2 中序遍历 void InOrder(TNode* Root) 2.2.3 后序遍历 void Bac…

Linux中断框架

不管是裸机实验还是 Linux 下的驱动实验&#xff0c;中断都是频繁使用的功能&#xff0c;在裸机中使用中断我们需要做一大堆的工作&#xff0c;比如配置寄存器&#xff0c;使能 IRQ 等等。Linux 内核提供了完善的中断框架&#xff0c;我们只需要申请中断&#xff0c;然后注册中…

【rockyLinux】rockyLinux 9.4 安装 java jdk

一、安装 java 1.选择版本 yum list | grep jdk各个版本之间的区别&#xff1a; 2.选择了&#xff1a;java-17-openjdk-devel.x86_64&#xff08;开发者版本&#xff09;&#xff0c;开始安装 建议安装在 /usr/local 这个目录下&#xff0c;可以创建一个 app 目录来收录它…

重生奇迹MU 三个阶段三种体验

重生奇迹MU的玩家们通常按等级分为三个阶段。在这三个不同的阶段里&#xff0c;游戏中的玩家好像深入了三个不同的世界&#xff0c;经历了三种不同的游戏体验&#xff0c;收获了三种不同的精彩&#xff01; 从刚开始游戏一直到达到400级&#xff0c;是游戏中的第一个阶段&…

0719_驱动3 printk使用方法

一、printk使用方法 1.应用层打印使用printf&#xff0c;内核层使用printk 2.如何查看内核层中printk如何使用 3.在内核空间执行grep "printk" * -nR 4.在内核空间执行vi -t KERN_INFO 5.printk有8中打印级别&#xff08;0-7&#xff09;&#xff0c;打印级别用来过滤…

暴雨宅家?AI拯救你的无聊暑假!高中生必藏神器大公开

嘿&#xff0c;各位高中生朋友们&#xff0c;最近是不是被这没完没了的暴雨困在家里&#xff0c;感觉暑假生活都快发霉了&#xff1f;别急&#xff0c;今天我要揭秘一个宝藏网站—— ai123.cn&#xff0c;它简直就是咱们暑期宅家必备的救星&#xff01;接下来&#xff0c;我就来…

Selenium相对定位

测试网站&#xff1a;Web form 相对定位的方法&#xff1a; above()&#xff1a;定位基准元素上方的元素below()&#xff1a;定位基准元素下方的元素to_left_of()&#xff1a;定位基准元素左侧的元素to_right_of()&#xff1a;定位基准元素右侧的元素near() &#xff1a;定位基…

Windows横向渗透

准备靶机windows&#xff1a;192.168.10.131 准备攻击机&#xff1a;192.168.10.130 1.用cs连接到了windows靶机 2.使用cs探测内网信息&#xff1a; 查看当前目标系统网络情况&#xff0c;确认目标系统所在内网网段为10段 3.使用cs的portscan功能对内网进行扫描 portscan 1…

aarch64环境安装minio

1.去官网查看最新版本 MinIO | 用于AI的S3 & Kubernetes原生对象存储 2.使用命令安装,采取wget和dnf安装 wget https://dl.min.io/server/minio/release/linux-arm64/archive/minio-20240113075303.0.0-1.aarch64.rpm -O minio.rpm sudo dnf install minio.rpm 注意点…

MATLAB学习日志DAY16

16.数组类型&#xff08;1&#xff09; 16.1多维数组 MATLAB 环境中的多维数组是具有多个下标的数组。创建多维数组的一种方法是调用具有多个参数的 zeros、ones、rand 或 randn。 R randn(3,4,5); 创建一个 345 数组&#xff0c;共包含 3*4*5 60 个正态分布的随机元素。…

springboot在加了mapper之后报错

springboot在加了mapper之后报错 最后发现是spring boot版本不兼容&#xff0c;spring-boot-starter-parent换成3.0.5之后可以了

大模型金九银十秋招:AI时代的就业新趋势,收藏我这篇就够了非常详细

随着人工智能技术的飞速发展&#xff0c;大模型&#xff08;Large Models&#xff09;在各个领域的应用日益广泛&#xff0c;从自然语言处理到图像识别&#xff0c;从自动驾驶到智能推荐系统&#xff0c;大模型正逐渐成为AI领域的新宠。在这个背景下&#xff0c;大模型的秋招&a…

ubuntu串口重命名助手x86_64电脑架构(秒速配好串口)(上)软件介绍

✨✨ Rqtz 个人主页 : 点击✨✨ &#x1f388;PyQt系列专栏:点击&#x1f388; &#x1f388;Qt智能车上位机专栏: 点击&#x1f388; &#x1f388;Qt串口助手专栏:点击&#x1f388; &#x1f4ab;宗旨:共享IT之美,共创机器未来 目录 ​编辑 ​编辑 项目背景 相关参数…

基于Pytorch框架的深度学习densenet121神经网络鸟类行为识别分类系统源码

第一步&#xff1a;准备数据 5种鸟类行为数据&#xff1a;self.class_indict ["bowing_status", "grooming", "headdown", "vigilance_status", "walking"] &#xff0c;总共有23790张图片&#xff0c;每个文件夹单独放一…

从零开始学习网络安全渗透测试之基础入门篇——(三)APP架构小程序H5+Vue语言Web封装原生开发Flutter

从零开始学习网络安全渗透测试之基础入门篇——&#xff08;三&#xff09; #APP架构&小程序&H5Vue语言&Web封装&原生开发&Flutter 确保App和小程序的安全性是移动应用开发中的重要环节。比如&#xff0c;代码混淆、数据加密、安全审计、权限管理、API安…

[240727] Qt Creator 14 发布 | AMD 推迟 Ryzen 9000芯片发布

目录 Qt Creator 14 发布Qt Creator 14 版本发布&#xff0c;带来一系列新功能和改进终端用户可通过命令行方式查看此新闻终端用户可通过命令行方式安装软件&#xff1a; AMD 推迟 Ryzen 9000芯片发布 Qt Creator 14 发布 Qt Creator 14 版本发布&#xff0c;带来一系列新功能…

IntelliJ IDEA 中安装 Groovy 插件 添加 Groovy SDK

一、在 IntelliJ IDEA 中安装 Groovy 插件可以按照以下步骤进行&#xff1a; 打开 IntelliJ IDEA&#xff1a; 启动 IntelliJ IDEA。 打开插件市场&#xff1a; 进入 File -> Settings&#xff08;在 macOS 上是 IntelliJ IDEA -> Preferences&#xff09;。在左侧菜单中…