GitLab与jekins结合构建持续集成(cl)环境(3)

news2024/12/23 16:45:57

目录

在jenkins上部署maven

配置maven

 jenkins回滚

Git方式回滚

 通过发布时备份,回滚是选择指定备份文件进行回滚

 jenkins添加邮件报警

 Jenkins如何远程管理部署节点

Jenkins的远程管理方式:

SSH Plugin

Publish over SSH

jenkins整合Ansible

jenkins集群


在jenkins上部署maven

#解包
tar zxvf apache-maven-3.9.1-bin.tar.gz 
mv apache-maven-3.9.1 maven
ln -s /root/maven/bin/mvn /usr/bin/mvn

配置maven

Manage Jenkins --->Global Tool Configuration

 上传java项目

百度网盘链接:https://pan.baidu.com/s/1YoMfGMF1MtBFNz3Lb2sNtQ?pwd=2r9x 
提取码:2r9x

git add .
git commit -m "add java"
git push origin main

创建新项目

 

编写脚本

vim /root/tomcat/update.sh
#!/bin/bash
source /etc/profile
scp /var/lib/jenkins/workspace/maven/test1/target/test1.war  root@192.168.100.10:/root/tomcat
ssh root@192.168.100.10 "docker exec -it a502a881e225 ./bin/shutdown.sh"
sleep 3
ssh root@192.168.100.10 "docker start a502a881e225"

chmod +x tomcat_update.sh 

#在docker服务器
mkdir /root/tomcat
docker run -itd -p 8080:8080 -v /root/tomcat/:/usr/local/tomcat/webapps --name=tomcat tomcat:10.1.7 

 

 jenkins回滚

上一篇文章的分支回滚太low了,采用下面两种方法

第一种:

Git方式回滚

Git可以通过代码提交的commit ID号,就可以回到之前的状态,需要安装gogs插件

这些就是commit id号

#克隆
git clone git@192.168.100.5:liuyuhao/test.git

cd test

vim index.html 
lzz v1 !!!


#上传
[root@localhost test]# git add .
[root@localhost test]# git commit -m "add v1"
[main df2589b] add v1
 1 file changed, 1 insertion(+), 1 deletion(-)

[root@localhost test]# git push origin main

Counting objects: 5, done.
Writing objects: 100% (3/3), 243 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)

To git@192.168.100.5:liuyuhao/test.git
   b022061..df2589b  main -> main

在jenkins配置项目,项目还是上一章的

在Gogs Webhook 中√上This project is parameterized选项,添加Choice Parameter和

String Parameter 

添加Build Steps 

#$ststus必须和上面Choice Parameter的名称一样

#!/bin/bash
case $status in
	Rollback)
    	echo"----本次操作为回滚,版本号为$version-------"
        git reset --hard $version
        echo "------回滚完成,打包中"
        ;;
        *)
        exit
    esac

 改完后保存,构建

开始构建

 浏览器访问 

回滚

 通过发布时备份,回滚是选择指定备份文件进行回滚

选择这种方式的好处:回滚java代码时需要maven编译,maven非常慢,构建以后在回滚还需要重新构建。通过这种方式可以解决这个问题。

 更改脚本

case $status in
Deploy)
   echo "----发布前进行打包备份----"
   echo "status:$status"
   BACK_DIR=/var/lib/jenkins/workspace
   path="${BACK_DIR}/bak"
   if [ -d $path ]
   then
        echo "The files is already exists"
   else
        mkdir -p $path
   fi
   cd ${BACK_DIR}/${JOB_NAME}
   #${JOB_NAME}=项目名称
   #${BUILD_NUMBER}=第几次构建
   tar czf ${JOB_NAME}-${BUILD_NUMBER}.tar.gz *
   mv ${JOB_NAME}-${BUILD_NUMBER}.tar.gz ${BACK_DIR}/bak
   scp ${WORKSPACE}/* root@192.168.100.6:/var/www/html/
   echo "Completin"
;;

Rollback)
   BACK_DIR=/var/lib/jenkins/workspace
   cd ${BACK_DIR}/bak
   tar zxvf ${JOB_NAME}-${version}.tar.gz
   scp ${BACK_DIR}/bak/index.html root@192.168.100.6:/var/www/html/
   rm -rf ${JOB_NAME}
  ;;
  *)
  exit
  ;;
esac

删除

 保存构建

 

再次构建

 回滚到v1,即回到第65次构建

 

 jenkins添加邮件报警

在Manage Jenkins --->Configure System   找到 Jenkins Location和邮件通知

 在项目配置里,在最后找到构建后操作,添加E-mail Notification和Editable Email Notification

 

构建测试,将脚本随便修改一下就行,比如ip换了

 报警成功

 Jenkins如何远程管理部署节点

Jenkins的远程管理方式:

Shell ssh

SSH Plugin

ansible、saltstack

SSH Plugin

安装ssh插件

然后在Manage Jenkins --->Configure System找到 SSH remote hosts

 在项目配置里,删掉邮件报警,在Build Steps里添加Execute shell script on remote host using ssh

然后构建,在控制台输出

Publish over SSH

 在Manage Jenkins --->Configure System找到 Publish over SSH

 

 在项目配置里,删掉Gogs Webhook和Build Steps里的内容,在构建后操作里加Send build artifacts over SSH

 改完构建,看控制台输出的内容

jenkins整合Ansible

#安装ansible
[root@localhost ~]#yum -y install ansible
[root@localhost ~]#cd /etc/ansible/
[root@localhost ansible]#>hosts 
[root@localhost ansible]#vim hosts 
[client]
192.168.100.5        #gitlabip

[root@localhost ~]#ansible client -m ping
192.168.100.5 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

[root@localhost ~]#mkdir -p /data/Ansible-playbook
[root@localhost ~]#vim /data/Ansible-playbook/jenkins-mkdir.yml
---
- hosts: client
  gather_facts: no
  tasks:
  - name: 创建alex目录
    file: path=/data/alex state=directory

jenkins上装插件:ansible、ansible Tower,装完以后构建一个新项目

 直接构建

jenkins集群

再开一台机子,安装jenkins

安装过程看GitLab与jekins结合构建持续集成(cl)环境(2)

安装插件:ssh、ssh agent 、publish Over SSHversion

配置环境变量

vim /etc/profile
export MAVEN_HOME=/root/maven
export PATH=$PATH:$MAVEN_HOME
export JAVA_HOME=:/usr/local/java

source /etc/profile

在Manage Jenkins --->configure global security修改代理端口

 

添加节点

 在100.5需要

[root@localhost ~]# ssh-copy-id root@192.168.100.3

如果连接失败,在主节点服务器上

[root@localhost ~]#ssh-keygen -t rsa
[root@localhost .ssh]#ssh-copy-id root@192.168.100.3
[root@localhost ~]#cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEA2ykFPeRSDsyZ2HpvaJaWsluycRnIxu8/OkpMXRQmWKamTDBI
D2t7+W8RrjSPfy0pwjQ4TVdg0bodiGdZx9orbLOuRzBVBsRCsGKlTUtqC9ccHpih
P46MVJ89NhaVT2NX6Oo74sOtUL5+lZN0JUY58r6zTcvcr7DpCyt+XIKro8JtIefc
3Dst/ktMQekRNmDLSRAUINJj3QyHaNsA5VJcJk/iC2OjRceDtb1EwDDivymRYEHZ
fp7kZefZMYXTcC0Wq3gHEGPtESCny2I59tArT9bYux6h/q5R5pgy1XUoJL5uutzU
GB2ZB0TIDMg7zXZNDcQ7Msylcun8dtG+8jjtkwIDAQABAoIBAH8Jry0qPVqwxPkU
N6IzsFThDHW9EYInSspaKRvHQ1cd+sWtMwglMO7ssB3//7IjltIo/P3wCYJo1Ret
eQB8+bEAEqTXYmISv+mItPMyJN2KKpWdudKiqbuftpa0zoX/OwUbSe1vqfZlBfFk
UO4OYCbS3hLZeiopbVz5MD0lzaKVTXZ0U6hmCdcD9p7Ufd1iOGUGK5TrgnTUTn/E
fEimlPrDwY9hVa+XXYgaHntck1io7na7G2XcZCLwX4GaWCxXfd+wr7pEzvFUnqkI
ArIpeOnpFV9Yt2obe5Ivts9QiS56cQgtkCYNqtX/i1EhcwnidBxu0zpf3tMDXeGa
GySBm9kCgYEA9MdH/20Ui/OpJkgmLcl4DVB09LIHGA5O56Je1M5KSn2xV9Q6zSOd
Ly+3Ea2WaQIyP6IsEo0IO9zh5kyTVlEvq7lnDvl/XXMi9Ialeog3CBF+ZdEbKiF7
8hI/V+n0cyipTz1G95U5sY6vFsX7R/kyQKEQ1y43FsxagaTjVPnfalUCgYEA5TUV
hgbzdPxQlZ5cvmq0ejzkoB29Q2+LG6CJ/IUY3VKngBRT0OeXZ0f7hXU5qwK3q6rQ
pJpgYJwhiomcUkH5JpDZQ2+oyVc5ITbZ0h4WtTQFjZcQrYhxlGM23V2tASPDWCVq
8lBZvU1Ky6CfoE5qpft0rM8av4VpOyisUlOIsEcCgYBrf/GgvdkeNZ59z4Xk6ewt
fL5AkMcIy4/frrGTKB38ZQMznWNNoGxxwrTVsLSz3WEQDTrp0sJg9/rF16+FYxZa
how6SVykP+KEHXYjQBtbEcO/F3yknhv/DgB/raHLyXnB8RlvtjumPRGsILrguxJU
y+fHeOZ8vrao5S9prGtwGQKBgDX255hkrpFOjpKLdH6IlPFqwNFJ7zOfYXshsxs3
IwGI4lLvdkRrImR4uClVzjwLKb9LOlBm4GYenG8HszxSuBxyYhTUh0LQPG0rguFL
oEENfHk3pf+Vblhne5Vm5sKr7uQj+ygN7vL47bE/ohWWINnveCrvn/aTrJD3JItF
i5slAoGAFs1/0XnwOZcvMc3YZ+wgBrgdfGspF9JQONKIX4u/+Y1saAzJWV9vS0BM
apR1WcNrs/lMmzMWJaZ2TYAR6vI8iPUbuCCkPBPjojysQKs/jNY3SpoOYS7P/5Wy
5JgMcMU0qJlFVflglOb2EPZUVj7EvoV9jujhXMh8Bap6fmvdgrI=
-----END RSA PRIVATE KEY-----


将这一串复制到

正常是这样的 

 

gitlab上的秘钥也需要换

 让项目在指定节点运行

保存构建。如下图是以node01节点构建的

 如果失败的话,可以试试将node01和网站服务器之间设置免密登录

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

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

相关文章

山路转债上市价格预测

山路转债 基本信息 转债名称:山路转债,评级:AA,发行规模:48.36亿元。 正股名称:山东路桥,今日收盘价:7.3元,转股价格:8.17元。 当前转股价值 转债面值 / 转股…

港科夜闻|香港科技大学(广州)与中国电信广东公司签署战略合作协议

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科技大学(广州)与中国电信广东公司签署战略合作协议。根据协议,双方将围绕各自科技创新及发展需要,整合双方的优质资源和优势能力,务实开展多方位的战略合作。本次合作&#xff0c…

ROS学习第四十二节——地图服务

https://download.csdn.net/download/qq_45685327/87721374 上一节我们已经实现通过gmapping的构建地图并在rviz中显示了地图,不过,上一节中地图数据是保存在内存中的,当节点关闭时,数据也会被一并释放,我们需要将栅格…

[译]理解 Rust 中的所有权

本文译者为 360 奇舞团前端开发工程师 原文标题:Understanding ownership in Rust 原文作者:Ukpai Ugochi 原文链接:https://blog.logrocket.com/understanding-ownership-in-rust/ 在 Stack Overflow 进行的开发人员调查中,Rust …

第二十六章 案例TodoList 之实现Footer组件

本小节,我们来实现最后的Footer组件的功能,它的功能主要有: 记录已完成和全部的任务列表数量点击【复选框】可以实现全选和全不选点击【删除已完成】按钮,可以将选中的任务项删除掉 实现已完成和全部的任务列表数量 步骤1&#…

提交Spark应用程序

文章目录 一,提交语法格式二,spark-submit常用参数三,案例演示 - 提交Spark自带的圆周率计算程序(一)Standalone模式,采用client提交方式(二)Standalone模式,采用cluster…

PMP第六版_1~3章

回想起来,距离上次看pmp已经过去一年多, 等着等着,第七版都出来了.自己还是没下决心考.第六版也都忘干净了.哎. 越来越不记事了.一转眼2023年了.哎…时间过得真快. 做个记录,顺便勉励自己吧. PMP 项目管理 按照十大知识领域来写的 要有美式思维 题干量大(因中英语言区别) 越…

Linux网络服务远程访问及控制SSH(你明目张胆的偏爱就是救赎)

文章目录 一、SSH的介绍及其相关知识点1.简介2.SSH的优点3.SSH的密钥登录 二、SSH的运用1.存放ssh服务端的配置文件2.白名单&黑名单3.存放ssh客户端的配置文件 三、ssh密钥登录操作1.密码验证2.秘钥对验证3.ssh远程登录SCP 远程复制SFTP获取服务端的文件 四、秘钥对的创建操…

nodejs+vue 校友录校友捐赠系统

校友录的设计与实现该系统面对的是用户和管理员,对于用户来说其最大的作用是在校友录的设计与实现前台查看校友活动、校友风采、校友捐赠、班级录、新闻中心、,其次进行交流园地。对管理员而言则是对用户、活动类型、校友活动、校友风采、校友捐赠、班级…

PCIE内核注册详解

代码结构 在Linux内核中,PCIe驱动程序的注册和处理涉及到许多文件,其中一些主要的文件包括: drivers/pci/pci.h:这个文件定义了PCIe驱动程序结构体和相关的函数。驱动程序需要包含这个头文件才能使用PCIe相关的函数和结构体。 d…

【观察者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 观察者模式(Observer Pattern)是一种行为型模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 观察者模式使用三个类Subject、Observer和Client。Subject…

ChatGPT热中的冷思考

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

taro之项目初始化模版

项目初始化模板 一直以来,在使用 Taro CLI 的 taro init 命令创建项目时,CLI 会提供若干内置模板给开发者选择。但是很多团队都有自己独特的业务场景,需要使用和维护的模板也不尽一致,因此 Taro 支持把项目模板打包成一个能力赋予…

思科模拟器 | 生成树协议STP、RSTP、HSRP配置

一、生成树协议STP 概念介绍: 生成树协议是一种网络协议,用于在交换机之间建立逻辑上的树形拓扑结构避免产生环路。为了完成这个功能,生成树协议需要进行些配置,包括根桥的选举、端口的状态切换等。 步骤明细: 使用思…

itop-3568 开发板系统编程学习笔记(21)PWM 应用编程

【北京迅为】嵌入式学习之Linux系统编程篇 https://www.bilibili.com/video/BV1zV411e7Cy/ 个人学习笔记 文章目录 在设备树打开 PWMsysfs 方式控制 PWMPWM 应用编程 在设备树打开 PWM RK3568 有 16 个 PWM 控制器,本文件将以 PWM0 为例进行实验,为什么…

如何在PowerShell中查找、添加、修改和删除环境变量:解决手动设置环境变量后报命令失效的问题

简介 PowerShell是Windows平台上的一种命令行工具,它可以方便地查找、添加、修改和删除环境变量。在本文中,LZ将介绍如何在PowerShell中进行这些操作。 查找环境变量 在PowerShell中查找环境变量非常简单。只需要使用Get-ChildItem命令,以…

LED驱动 中断

1、用字符设备驱动框架和平台设备驱动框架实现LED驱动 1.1 用字符设备驱动框架-----》led2 控制led2闪烁 1.应用层: 1 open(“/dev/haha0”) 2 while(1) ioctl(fd,LED_ON)&#xff…

java的社区养老服务系统 ssm空巢老人

创新点: 1、根据时间、类型统计用户下单记录,形成可视化图形(饼状图) 2、根据用户爱好推荐项目 包含模块:关于我们、联系我们、外链信息、资讯类型、服务资讯、服务类型、服务项目、案例类型、服务案例、讨论类型、讨论…

引入Tuning function design的自适应反步控制方法 上篇

引入Tuning function design的自适应反步控制方法 上篇 目录 引入Tuning function design的自适应反步控制方法 上篇尝试用推迟参数设计解决高阶不匹配系统的控制器设计问题问题描述控制器设计小结上一篇文章写了如何通过推迟参数设计的方法来解决不匹配条件下的系统反步控制设…

【原型设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 原型模式(Prototype Pattern)是一种创建型设计模式,使你能够复制已有对象,而无需使代码依赖它们所属的类,同时又能保证性能。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创…