Jenkins参数化构建及代码发布

如何使用gitlab--web端可以观看此篇教程

https://blog.csdn.net/m0_59933574/article/details/134528050?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/m0_59933574/article/details/134528050?spm=1001.2014.3001.5502

整体思路

依赖环境及工具

  • Git

  • Centos7及以上

  • Gitlab

  • Jenkins

  • shell

  • ansible

实验机器

主机ip安装服务
192.168.231.241jenkins,后面称为jenkins端
192.168.231.238        gitlab,后面称为gitlab端
192.168.231.132git,nginx,后面称为nginx端

实验流程

jenkins-web端

构建后的操作 给我发邮件来通知我,以此来验证我是否实验成功

nginx端

首先下载nginx,其次删除其默认的网站发布目录html

rm -rf /usr/share/nginx/html

下载git

yum -y install git

gitlab端

新建一个项目:nginx-parameter

新建一个文件,不需要太复杂,简单的 可以证明实验即可,我的内容是

<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>参数化构建</title>
</head>
<body><h1>第一次提交</h1>
</body>
</html>

提交,克隆ssh

nginx端

将代码拉取到nginx的默认网站发布目录下,将其改名为html

[root@mysql nginx]# git clone http://192.168.231.238/root/nginx-parameter.git
正克隆到 'nginx-parameter'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 15 (delta 0), reused 0 (delta 0), pack-reused 12
Unpacking objects: 100% (15/15), done.
[root@mysql nginx]# ls
modules  nginx-parameter###改名
[root@mysql nginx]# mv nginx-parameter/  html
[root@mysql nginx]# cd html/
[root@mysql html]# ls
index.html  README.md

将nginx端的公钥给gitlab端,这样nginx端去拉取代码就不需要输入密码

[root@nginx ~]# cat .ssh/
authorized_keys  id_rsa           id_rsa.pub       known_hosts      
[root@nginx ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3MCPw7lCMJo34jv6igODosRxIOGbavGGkNpya/Pmg74Lr9GWlWUR046NXJrB61fLC7HfSXCguP1up6ttZjP+b/qTtxT9rtZP4e2pNbk4t9Y+gE+JD6ZI1/mZL7Kr65CgaOq2UYJiJawY1+d3ElkXIt5g0wB5RBvuMPt/UMAGDH7HJ03CFzcD0T+K9oFQM/vbIZDXU/wbw/fMnQtpZKk0xgvKcKt/nUq07VSrblcumNSZyihvIEMZ6FphTYHd803JsOL51DHbhh6eegY5zriDD7gqtmYf8d9EXkFphZECHBiYxABMeNxzqxIV/7LoiYFV/lyTZZkYAvrrW2PRdBajj root@mysql

添加保存即可

jenkins节点上,下载ansible

下载ansible
yum -y insatll ansible编辑管理机器
[root@jenkins ~]# cat /opt/hosts 
[nginx]
192.168.231.132将自己的公钥发给nginx端
[root@jenkins ~]# ssh-copy-id 192.168.231.132
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.231.132's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh '192.168.231.132'"
and check to make sure that only the key(s) you wanted were added.

验证能否管理ping通

[root@jenkins ~]# ansible -i /opt/hosts all -m ping -o
192.168.231.132 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}

写个脚本

[root@jenkins opt]# cat nginx-parameter.sh 
#!/bin/bash# nginx\tomcat
SERVICE_NAME=$1# start\stop\restart\none
SERVICE_STATUS=$2# pull\reset1\reset2\reset_id\none
GITLAB_CODE=$3# node\GITLAB_CODE值为reset_id时需要
GITLAB_ID=$4CMD="ansible -i /opt/hosts nginx"if [ "$SERVICE_NAME" = "nginx" ];thenif [ "$GITLAB_CODE" = "pull" ];then$CMD -m shell -a "chdir=/usr/share/nginx/html  git pull  git@192.168.231.238:root/nginx-parameter.git" elif [ "$GITLAB_CODE" = "reset1" ];then$CMD -m shell -a "chdir=/usr/share/nginx/html git reset --hard HEAD^"elif [ "$GITLAB_CODE" = "reset2" ];then$CMD -m shell -a "chdir=/usr/share/nginx/html git reset --hard HEAD^^"elif [ "$GITLAB_CODE" = "reset_id" ];then$CMD -m shell -a "chdir=/usr/share/nginx/html git reset --hard $GITLAB_ID"fiif [ "$SERVICE_STATUS" != "none" ];then$CMD -m shell -a "systemctl $SERVICE_STATUS nginx"fi
fi

jenkins的web端

增加构建步骤

开始实验

第一次构建

控制台输出

查看nginx端

第二次构建

修改gitlab端的代码

构建,同样都是拉取最新的代码

控制台输出

查看nginx端

第三次构建

修改gitlab端的代码

开始构建,同样拉取最新的代码,查看控制台输出

查看nginx端

开始回滚-1

构建,回到上俩次

查看控制台输出

查看nginx端

开始混滚-2

构建,回到上一次

查看控制台输出

查看nginx端

jenkins参数化构建的好处

  1. 灵活性:参数化构建可以根据不同的需求定制构建过程。你可以在执行作业时输入参数,使构建过程更加灵活和可配置。

  2. 可重用性:通过参数化构建,你可以将一个通用的构建过程转化为可重复使用的模板,以适应不同的场景和需求。这样可以避免重复创建相似的作业,提高效率。

  3. 自动化:通过参数化构建,可以实现自动化的构建流程。例如,可以通过选择参数来控制构建的环境、版本等,减少手动干预,提高自动化程度。

  4. 参数验证:参数化构建可以对输入的参数进行验证,确保输入的值符合要求。这有助于减少人为错误和不一致性。

  5. 集成测试:参数化构建可以与其他插件和工具集成,从而实现更复杂的构建和集成测试流程。例如,可以根据参数的不同执行不同的测试套件或部署到不同的环境。

总之,参数化构建提供了更大的灵活性和可配置性,帮助你根据需求定制构建过程,并提高自动化程度和效率。它是Jenkins强大的功能之一,可以帮助你更好地管理和执行构建任务。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW开发新型电化学性能测试设备

LabVIEW开发新型电化学性能测试设备 开发了一种基于Arduino和LabVIEW的新型电化学性能测试装置&#xff0c;专门用于实验电池&#xff0c;特别是在锂硫&#xff08;Li-S&#xff09;技术领域的评估。这种装置结合了简单、灵活的硬件和软件工具&#xff0c;使新科学家能够设计针…

陀螺仪LSM6DSV16X与AI集成(4)----Qvar触摸电容配置

陀螺仪LSM6DSV16X与AI集成.4--Qvar触摸电容配置 概述视频教学样品申请源码下载生成STM32CUBEMX串口配置IIC配置CS和SA0设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置Qvar 功能的实现和配置设置量程和速率配置过滤链激活 Qvar 功能获取Qvar数据演示 概述 Qvar&#x…

算法Day24 不专心开车

不专心开车 Description 小硕开车经过一条公路&#xff0c;这条路线总共由n 1个不同海拔的点组成。小硕从海拔为0的点0开始骑行。 给小硕一个长度为n的整数数组arr&#xff0c;其中arr[i]是点i和点i 1的净海拔高度差&#xff08;0≤i < n&#xff09;。请你返回最高点的海…

白盒测试 接口测试 自动化测试

一、什么是白盒测试 白盒测试是一种测试策略&#xff0c;这种策略允许我们检查程序的内部结构&#xff0c;对程序的逻辑结构进行检查&#xff0c;从中获取测试数据。白盒测试的对象基本是源程序&#xff0c;所以它又称为结构测试或逻辑驱动测试&#xff0c;白盒测试方法一般分为…

OpenGLES:glReadPixels()获取相机GLSurfaceView预览数据并保存

Android现行的Camera API2机制可以通过onImageAvailable(ImageReader reader)回调从底层获取到Jpeg、Yuv和Raw三种格式的Image&#xff0c;然后通过保存Image实现拍照功能&#xff0c;但是却并没有Api能直接在上层直接拿到实时预览的数据。 Android Camera预览的实现是上层下发…

cache教程1.LRU 缓存淘汰策略

这一节实现LRU算法&#xff0c;要理解明白其使用的数据结构。 FIFO/LFU/LRU 算法简介 Cache的缓存全部存储在内存中&#xff0c;内存是有限的&#xff0c;因此不可能无限制地添加数据。当占用内存超过了给定的内存大小时候&#xff0c;就需要从缓存中移除一条或多条数据了。我…

【机器学习】042_迁移学习

一、概述、定义 目的&#xff1a; 迁移学习的目的是将某个领域或任务上学习到的模式、知识应用到不同但相关的领域里&#xff0c;获取更多数据&#xff0c;而不必投入许多时间人力来进行数据的标注。 举例&#xff1a; 已经会下中国象棋&#xff0c;就可以类比着来学习国际…

shell脚本实战之mysql-物理备份实现周内备份策略

一.shell脚本要求 # 数据库备份脚本方式: 物理备份# 工具:xtrabackup过程# 需求1:不允许有任何的安在脚本中&#xff0c;# 需求2:在脚本中&#xff0c;不允许有任何的交互式代码容&#xff0c;使用日志记录# 需求3:在脚本中&#xff0c;不允许有任何输出# 需求4:每周为一个循环…

SSD数据在写入NAND之前为何要随机化?-part2

接part1介绍&#xff1a; 如何达到这个目的&#xff1f;业内常用的是对写入数据的数据进行随机化处理&#xff0c;这部分主要在SSD控制器中通过硬件实现。 上图b/c&#xff1a;在控制器芯片通过硬件方式实现随机化的读写流程&#xff0c;这个也是业内通常做法。随机化处理是在写…

JVM虚拟机:命令行查看JVM垃圾回收器的执行信息

在eclipse中打开命令行窗口 window->show view->Terminal 这样就打开了Terminal窗口&#xff0c;效果如下所示&#xff1a; java -XX:PrintCommandLineFlags -version 这个命令可以查看一些配置信息&#xff0c;其中最重要的配置信息就是&#xff0c;当前使用的G1回收器…

机器学习算法性能评估常用指标总结

考虑一个二分问题&#xff0c;即将实例分成正类&#xff08;positive&#xff09;或负类&#xff08;negative&#xff09;。对一个二分问题来说&#xff0c;会出现四种情况。如果一个实例是正类并且也被 预测成正类&#xff0c;即为真正类&#xff08;True positive&#xff0…