Jenkins参数化构建
目录
一. 准备ansible
二. Gitlab新建子项目
三. Jenkins建立任务,进行初步配置
四. 导入nginx主机的公钥
五. 配置ansible执行脚本
六. 构建测试

一. 准备ansible
在jenkins主机中安装ansible
[root@jenkins ~]# yum install -y epel-release
[root@jenkins ~]# yum install -y ansible
查看配置文件
[root@jenkins ~]# cat /etc/ansible/ansible.cfg
# Since Ansible 2.12 (core):
# To generate an example config file (a "disabled" one with all default settings, commented out):
# $ ansible-config init --disabled > ansible.cfg
#
# Also you can now have a more complete file by including existing plugins:
# ansible-config init --disabled -t all > ansible.cfg# For previous versions of Ansible you can check for examples in the 'stable' branches of each version
# Note that this file was always incomplete and lagging changes to configuration settings# for example, for 2.9: https://github.com/ansible/ansible/blob/stable-2.9/examples/ansible.cfg
初次进入需要自己选择两个命令其中一个执行,然后生成配置命令,后者比前者多一些插件相关的配置选项。
ansible-config init --disabled > ansible.cfg
或
ansible-config init --disabled -t all > ansible.cfg
[root@jenkins ~]# cd /etc/ansible/
[root@jenkins ansible]# ansible-config init --disabled -t all > ansible.cfg
[root@jenkins ansible]# vim /etc/ansible/ansible.cfg +318host_key_checking=Flase #将这个参数配置打开
配置主机清单
本机jenkins为192.168.226.22 主机清单配置另一台用于nginx上线项目的主机192.168.226.21
[root@jenkins ansible]# vim /etc/ansible/hosts
[nginx]
192.168.226.21 ansible_user=root ansible_password=lzz2578+[tomcat]
验证连通性
[root@jenkins ansible]# ansible all -m ping
192.168.226.21 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"
}
在192.168.226.21主机中下载nginx并启动
[root@nginx ~]# yum install -y nginx && systemctl enable --now nginx
二. Gitlab新建子项目
gitlab仓库主机为192.168.226.20 


建立一个index.html代码文件用于测试


输入代码提交
<!DOCTYPE html>
<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>

三. Jenkins建立任务,进行初步配置


图中设置中构建步骤的代码如下:
echo "=========="
sh /opt/ansible.sh $service $status $gitlab_code $code_idecho "==========="echo "代码上线完成"
四. 导入nginx主机的公钥
# 生成密钥对
[root@nginx ~]# ssh-keygen# 复制查看到的公钥
[root@nginx ~]# cat .ssh/id_rsa.pub



[root@nginx nginx]# cd /usr/share/nginx
# 备份原目录
[root@nginx nginx]# mv html html.break
克隆代码仓库

[root@jenkins nginx]# git clone git@192.168.226.20:ugo_team/ceshi-paramter.git
# 给改目录改名
[root@nginx nginx]# mv ceshi-paramter html
五. 配置ansible执行脚本
[root@jenkins nginx]# cd /opt
[root@jenkins opt]# vim ansible.sh
#!/bin/bash# 接收 Jenkins 传递的参数
SERVICE_NAME="$1"
SERVICE_STATUS="$2"
GITLAB_CODE="$3"
CODE_ID="$4"# Ansible 主机清单路径
HOST="/etc/ansible/hosts"# Ansible 命令基础部分
CMD="/usr/bin/ansible -i $HOST"# 检查服务名称是否为 nginx,并根据传递的 GITLAB_CODE 参数执行不同的操作
if [ "$SERVICE_NAME" = "nginx" ]; thenif [ "$GITLAB_CODE" = "pull" ]; thenecho "Executing: $CMD $SERVICE_NAME -m shell -a 'chdir=/usr/share/nginx/html git pull origin main'"$CMD $SERVICE_NAME -m shell -a "chdir=/usr/share/nginx/html git pull origin main"elif [ "$GITLAB_CODE" = "reset1" ]; thenecho "Executing: $CMD $SERVICE_NAME -m shell -a 'chdir=/usr/share/nginx/html git reset --hard HEAD^'"$CMD $SERVICE_NAME -m shell -a "chdir=/usr/share/nginx/html git reset --hard HEAD^"elif [ "$GITLAB_CODE" = "reset2" ]; thenecho "Executing: $CMD $SERVICE_NAME -m shell -a 'chdir=/usr/share/nginx/html git reset --hard HEAD^^'"$CMD $SERVICE_NAME -m shell -a "chdir=/usr/share/nginx/html git reset --hard HEAD^^"elif [ "$GITLAB_CODE" = "code_id" ]; thenecho "Executing: $CMD $SERVICE_NAME -m shell -a 'chdir=/usr/share/nginx/html git reset --hard $CODE_ID'"$CMD $SERVICE_NAME -m shell -a "chdir=/usr/share/nginx/html git reset --hard $CODE_ID"elseecho "Unknown GITLAB_CODE: $GITLAB_CODE"exit 1fi# 根据传递的 SERVICE_STATUS 参数执行 systemctl 操作if [ "$SERVICE_STATUS" != "none" ]; thenecho "Executing: $CMD $SERVICE_NAME -m service -a 'name=$SERVICE_NAME state=$SERVICE_STATUS'"$CMD $SERVICE_NAME -m service -a "name=$SERVICE_NAME state=$SERVICE_STATUS"fi
elseecho "Unsupported SERVICE_NAME: $SERVICE_NAME"exit 1
fi
加上执行权限
[root@jenkins opt]# chmod +x ansible.sh
六. 构建测试
点击构建

选择对应的参数

看构建成功

访问nginx主机的网页例如我这里访问:http://192.168.226.21/

代码仓库修改代码测试

再次构建


如此再重复进行一次修改并构建

进行版本回退测试,回退上两个版本



回退到指定版本
到代码仓库查提交记录

这次选择刚最新提交的,也是有三个标题的那个版本,复制其对应的字符

点击构建,选择对应的参数


如此就完成了简易实验。
相关文章:
Jenkins参数化构建
目录 一. 准备ansible 二. Gitlab新建子项目 三. Jenkins建立任务,进行初步配置 四. 导入nginx主机的公钥 五. 配置ansible执行脚本 六. 构建测试 一. 准备ansible 在jenkins主机中安装ansible [rootjenkins ~]# yum install -y epel-release [rootjenkins…...
函数实例讲解(三)
文章目录 常用的三个数学函数1、绝对值函数ABS2、取整数部分INT3、求余数函数MOD 求极值函数max、min1、Max2、Min 附加条件下求平均数1、AVERAGE2、AVERAGEIF3、AVERAGEIFS VLOOKUP与COLUMN1、VLOOKUP2、COLUMN 查找函数LOOKUP1、基础语法2、向量形式3、数组形式 常用的三个数…...
如何选择适合自己的编程语言?大学新生入门编程最佳路径指南
编程已成为当代大学生的必备技能,但面对众多编程语言和学习资源,新生们常常感到迷茫。如何选择适合自己的编程语言?如何制定有效的学习计划?如何避免常见的学习陷阱?本文将为你提供详细的指导,为你的大学生…...
编程的法则 依赖倒置原则 (Dependency Inversion Principle)包括如何实践
编程的法则 依赖倒置原则 (Dependency Inversion Principle)包括如何实践 flyfish 2017-07-19 2024-07-18 在软件工程中,存在着层次结构,其中上层的业务逻辑依赖于下层的实现细节。如果是直接的依赖关系可能会导致问题…...
[数据集][目标检测]肾结石检测数据集VOC+YOLO格式1299张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1299 标注数量(xml文件个数):1299 标注数量(txt文件个数):1299 标注…...
pxe安装部署
RHEL7为例: ifconfig查看ip 一.环境配置 1.配置软件仓库: mkdir /rhel7 mount /dev/cdrom /rhel7 echo mount /dev/cdrom /rhel74 >> /etc/rc.d/rc,local chmod x /etc/rc.d/rc.local 2.关闭火墙和selinux,下载…...
Linux用户-sudo命令
作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注我,我尽量把自己会的都分享给大家,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux是一个多用户多任务操作系统,这意味着它可以同时支持多个用户登录并使用系统。…...
Unity强化工程 之 SpriteEditer Multiple
本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 1. SpriteEditer Multiple Automatic slicing - Unity 手册 这是用于裁剪图集的模式 应用之后精灵编辑器会看到Slice亮…...
大数据Flink(一百零九):阿里云Flink的基本名称概念
文章目录 阿里云Flink的基本名称概念 一、层次结构 二、概念说明 1、工作空间(Workspace) 2、项目空间(Namespace) 3、资源(Resource) 4、草稿(Draft&#…...
如何利用AI工具延长摸鱼时间、准点下班?
你好同学,我是沐爸,欢迎点赞、收藏和关注!个人知乎、公众号"沐爸空间" 俗话说,不会摸鱼的程序猿不是好的程序猿。同学,你是不是也在为不能准点下班、每天加班、没有时间提升自己而烦恼? 接下来…...
Yarn:一个快速、可靠且安全的JavaScript包管理工具
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,还请三连支持一波哇ヾ(@^∇^@)ノ) 目录 一、Yarn简介 二、Yarn的安装 1. 使用npm安装Yarn 2. 在macOS上…...
上线前端系统
上线一个静态的前端系统(续) 在eleme服务器上 启动服务 启动rpcbind [rooteleme-static ~]# systemctl restart rpcbind 启动nfs [rooteleme-static ~]# systemctl restart nfs 重启服务 启动smb [rootstatic-server img]# systemctl start smb…...
制作一个不依赖任何基础镜像的docker镜像
1、比如官方提供的hello-world镜像 #docker pull hello-world #docker images hello-world latest feb5d9fea6a5 2 years ago 13.3kB 可以看到这个镜像只有13.3kB 2、# docker run hello-world 只能打印一些信息 3、这个hello-world镜像的dockerfile就下面3行语…...
【拓扑排序topsort】——启动!!!
B3644 【模板】拓扑排序 / 家谱树 #include<bits/stdc.h> #define int long long #define fi first #define se second #define pb push_back #define PII pair<int,int > #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) using namespace std; …...
计算机网络-http协议和https的加密原理
HTTP(HyperText Transfer Protocol,超文本传输协议)是用于在万维网(World Wide Web)上传输超文本的基础协议。它定义了客户端(通常是浏览器)和服务器之间的文本数据传输格式和规则。以下是HTTP的…...
共享`pexlinux`数据文件的网络服务
实验环境准备: 1.红帽7主机 2.要全图形安装 3.配置网络为手动,配置网络可用 4.关闭vmware DHCP功能 一、kickstart自动安装脚本制作 1.安装图形化生成kickstart自动脚本安装工具 2.启动图形制作工具 3.图形配置脚本 这里使用的共享方式是http࿰…...
HC32F4A0 10路串口UART 配置
HC32 小华MCU 使用一段时间了,反正芯片BUG 是比较多了,比如串口接收错误后导致再也无法接收,PWM模块无法输出 低电平 , CAN 接收错误导致 输出引脚 CAN_TXD 一直输出脉冲 。。。;好的一面也存在吧,IO 引脚…...
拯救PyCharm:击退IDE崩溃的终极策略
拯救PyCharm:击退IDE崩溃的终极策略 PyCharm,作为开发界的明星IDE之一,以其强大的功能和灵活的定制性深受广大开发者喜爱。然而,即便是这样一款卓越的开发工具,也可能会遇到崩溃的问题,影响开发效率和工作…...
深入解析Unix命令:掌握wc、whereis和which的使用技巧
目录 1. wc命令 2. whereis命令 3. which命令 结论 在Unix和类Unix系统中,wc、whereis和which是三个常用的命令行工具,每个都有着独特的功能和用途。让我们逐个来了解它们的作用和使用方法。 1. wc命令 wc命令是"word count"的缩写&…...
奥运会大规模使用中国AI大模型!
B站:啥都会一点的研究生公众号:啥都会一点的研究生 AI圈最近又发生了啥新鲜事? 巴黎奥运会大规模使用中国 AI 大模型 巴黎奥运会成为一场科技与体育的盛宴,其中包括了大量中国科技的应用。AI 技术将在多个方面发挥作用…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
