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

2023-11-02 22:51

本文主要是介绍GitLab与jekins结合构建持续集成(cl)环境(3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

在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.gitcd testvim index.html 
lzz v1 !!!#上传
[root@localhost test]# git add .
[root@localhost test]# git commit -m "add v1"
[main df2589b] add v11 file changed, 1 insertion(+), 1 deletion(-)[root@localhost test]# git push origin mainCounting 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.gitb022061..df2589b  main -> main

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

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

String Parameter 

添加Build Steps 

#$ststus必须和上面Choice Parameter的名称一样#!/bin/bash
case $status inRollback)echo"----本次操作为回滚,版本号为$version-------"git reset --hard $versionecho "------回滚完成,打包中";;*)exitesac

 改完后保存,构建

开始构建

 浏览器访问 

回滚

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

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

 更改脚本

case $status in
Deploy)echo "----发布前进行打包备份----"echo "status:$status"BACK_DIR=/var/lib/jenkins/workspacepath="${BACK_DIR}/bak"if [ -d $path ]thenecho "The files is already exists"elsemkdir -p $pathficd ${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}/bakscp ${WORKSPACE}/* root@192.168.100.6:/var/www/html/echo "Completin"
;;Rollback)BACK_DIR=/var/lib/jenkins/workspacecd ${BACK_DIR}/baktar zxvf ${JOB_NAME}-${version}.tar.gzscp ${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: clientgather_facts: notasks:- 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/javasource /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和网站服务器之间设置免密登录

这篇关于GitLab与jekins结合构建持续集成(cl)环境(3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/333855

相关文章

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可