Redis-jenkins

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/bashecho "部署的目录和项目名称"
DIR="/data/app"
projectName="my-boot"echo "待部署的应用服务器,可多台"
# 部署项目的ip 
server_ips="192.168.111.188"
for server_ip in ${server_ips[@]}
doecho "ssh连接进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mkdir -p $DIR/backup/${projectName}
mkdir -p $DIR/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];thenmv $DIR/${projectName}/${projectName}.jar  $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar 
fi
EOFecho "拷贝jar包到目标服务器的tmp目录"
scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jarecho "ssh远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jarEOFdoneecho "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 ]];thensleep 3tail -n 10 release_out.logsleep 5tail -n 50 release_out.log
fi
aaa=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${aaa}" ]];thenecho "Application started ok"exit 0
elseecho "Application started error"exit 1
fi

关闭的脚本

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

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

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

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

相关文章

深度解析Linux-C——函数和内存管理

目录 函数指针&#xff1a; 指针函数&#xff1a; 参数为指针的函数&#xff1a; 参数为数组的函数&#xff1a; C语言内存管理 stdlib.h头文件常用函数介绍 1、局部变量 2、全局变量 3、 堆空间变量 4、静态变量 5、常量 函数指针&#xff1a; 指向函数的指针&#…

鸿蒙APP架构及开发入门

1.鸿蒙系统 1.1 什么是鸿蒙 鸿蒙是一款面向万物互联时代的、全新的分布式操作系统。 在传统的单设备系统能力基础上&#xff0c;鸿蒙提出了基于同一套系统能力、适配多种终端形态的分布式理念&#xff0c;能够支持手机、平板、智能穿戴、智慧屏、车机、PC、智能音箱、耳机、…

《程序猿入职必会(4) · Vue 完成 CURD 案例 》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

lua 游戏架构 之 游戏 AI (九)ai_mgr Ai管理

定义ai_mgr的类&#xff0c;用于管理游戏中实体的AI组件。 先定义 AI行为枚举和优先级&#xff1a; lua 游戏架构 之 游戏 AI &#xff08;八&#xff09;ai_tbl 行为和优先级-CSDN博客https://blog.csdn.net/heyuchang666/article/details/140712839?spm1001.2014.3001.55…

天工三维实景建软件 GodWork 3D 7.24 软件下载License使用

1、天工三维实景建软件GodWork 3D 7.24,城市级实景三维数据生产面临大数据量空三稳定解算的难题。受限于目前主流软件的解算能力与效率&#xff0c;生产单位常采用分块处理方法&#xff0c;接边处精度需要有足够的控制点来保证&#xff0c;这增加了外业布设控制点与内业的工作量…

巴斯勒相机(Basler) ACE2 dart 系列说明和软件

巴斯勒相机(Basler) ACE2 dart 系列说明和软件

开始尝试从0写一个项目--后端(三)

器材管理 和员工管理基本一致&#xff0c;就不赘述&#xff0c;展示代码为主 新增器材 表设计&#xff1a; 字段名 数据类型 说明 备注 id bigint 主键 自增 name varchar(32) 器材名字 img varchar(255) 图片 number BIGINT 器材数量 comment VARC…

Redis底层数据结构的实现

文章目录 1、Redis数据结构1.1 动态字符串1.2 intset1.3 Dict1.4 ZipList1.5 ZipList的连锁更新问题1.6 QuickList1.7 SkipList1.8 RedisObject 2、五种数据类型2.1 String2.2 List2.3 Set2.4 ZSET2.5 Hash 1、Redis数据结构 1.1 动态字符串 Redis中保存的Key是字符串&#xf…

php收银系统源码-收银员操作权限

收银系统是很多门店&#xff0c;尤其是连锁门店营业的必备工具&#xff0c;收银员每天需要通过收银系统记录商品的售卖数量&#xff0c;以及收款&#xff0c;会员开卡&#xff0c;核销订单等工作。但很多门店都不希望给收银员太高的权限&#xff0c;自然就离不开收银员的权限管…

windows server服务器/linux服务器离线安装pandas

windows server服务器/linux服务器离线安装pandas pypi官网下载whl文件速度较慢&#xff0c;推荐使用国内的镜像源来下载&#xff0c;镜像源地址为 清华大学 &#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云&#xff1a;http://mirrors.aliyun.com/pypi/simple…

Python | Leetcode Python题解之第278题第一个错误的版本

题目&#xff1a; 题解&#xff1a; # The isBadVersion API is already defined for you. # def isBadVersion(version: int) -> bool:class Solution:def firstBadVersion(self, n: int) -> int:left, right 1, nwhile left < right:mid left (right - left) //…

Dockerfile指令详解和Docker操作命令

1.容器的特点&#xff1a;1&#xff09;自包含&#xff08;包括应用程序及其运行环境&#xff09;&#xff1b;2&#xff09;可移植&#xff1b;3&#xff09;相互隔离&#xff1b;4&#xff09;轻量级。 2.docker成为容器的事实标准在于&#xff1a;1&#xff09;在运行环境上…

【通信模块】LoraWAN网络简介

LoRaWAN网络 技象科技相关文章总结&#xff0c;学习笔记&#xff0c;原文链接如下&#xff0c;转载请标明该出处&#xff1a; LORA&#xff1a; https://www.techphant.cn/tag/l-2 LORAWAN&#xff1a;https://www.techphant.cn/tag/l-3 其他&#xff1a;如LAN https://www…

静止轨道卫星大气校正(Atmospheric Correction)和BRDF校正

文章内容仅用于自己知识学习和分享&#xff0c;如有侵权&#xff0c;还请联系并删除 &#xff1a;&#xff09; 目的&#xff1a; TOA reflectance 转为 surface refletance。 主要包含两步&#xff1a; 1&#xff09;大气校正&#xff1b; 2&#xff09;BRDF校正 进度&#x…

repo 工具安装和使用教程(windows+gitee)

repo是什么 官方的定义&#xff1a;Repo是谷歌用python脚本写的调用git的一个脚本&#xff0c;可以实现管理多个git库。 Android的源代码使用Repo 命令行工具来管理多个git仓库&#xff0c;大概有百多个。要想克隆和管理百多个 Git 仓库&#xff0c;不是一件简单的事情。Repo 命…

嵌入式Python、ROS、SLAM、WebSocket和Node.js:智能巡逻监控安防机器人设计流程(代码示例)

项目概述 随着智能技术的发展&#xff0c;智能巡逻机器人在安防、监控和巡逻等领域的应用越来越广泛。本文将介绍一个结合嵌入式系统、机器人技术和后端开发的智能巡逻机器人。该机器人能够自主导航&#xff0c;实时检测异常情况&#xff08;如火灾或入侵者&#xff09;&#…

H616布线--规则设置于NET分组

一定先看工艺能力&#xff0c;再设计&#xff1a; 嘉立创盘中孔&#xff08;树脂塞孔电镀盖帽&#xff09;设计指引及规则 https://www.jlc.com/portal/q7i38630.html https://www.jlc.com/portal/vtechnology.html 这是我们的工艺参数&#xff0c;请您参考一下呢&#xff01…

Java_如何在IDEA中使用Git

注意&#xff1a;进行操作前首先要确保已经下载git&#xff0c;在IDEA中可以下载git&#xff0c;但是速度很慢&#xff0c;可以挂梯子下载。 导入git仓库代码 第一次导入&#xff1a; 首先得到要加载的git仓库的url&#xff1a; 在git仓库中点击 “克隆/下载” 按钮&#xf…

牛客TOP101:寻找峰值

文章目录 1. 题目描述2. 解题思路3. 代码实现 1. 题目描述 2. 解题思路 使用双指针&#xff0c;我们只需要找到一个峰值就可以了。 这个很重要&#xff0c;要记住。   我们先取到数组中间的值&#xff0c;让它与它的前一个或者后一个进行比较&#xff08;下面的代码实现是与后…

1、hadoop环境搭建

1、环境配置 ip(/etc/sysconfig/network-scripts) # 网卡1 DEVICEeht0 TYPEEthernet ONBOOTyes NM_CONTROLLEDyes BOOTPROTOstatic IPADDR192.168.59.11 GATEWAY192.168.59.1 NETMASK 255.255.255.0 # 网卡2 DEVICEeht0 TYPEEthernet ONBOOTyes NM_CONTROLLEDyes BOOTPROTOdh…