当前位置: 首页 > news >正文

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/ 

 

代码仓库修改代码测试

 

再次构建

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

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

 

回退到指定版本 

到代码仓库查提交记录

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

 

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

 

如此就完成了简易实验。 

http://www.lryc.cn/news/414799.html

相关文章:

  • 函数实例讲解(三)
  • 如何选择适合自己的编程语言?大学新生入门编程最佳路径指南
  • 编程的法则 依赖倒置原则 (Dependency Inversion Principle)包括如何实践
  • [数据集][目标检测]肾结石检测数据集VOC+YOLO格式1299张1类别
  • pxe安装部署
  • Linux用户-sudo命令
  • Unity强化工程 之 SpriteEditer Multiple
  • 大数据Flink(一百零九):阿里云Flink的基本名称概念
  • 如何利用AI工具延长摸鱼时间、准点下班?
  • Yarn:一个快速、可靠且安全的JavaScript包管理工具
  • 上线前端系统
  • 制作一个不依赖任何基础镜像的docker镜像
  • 【拓扑排序topsort】——启动!!!
  • 计算机网络-http协议和https的加密原理
  • 共享`pexlinux`数据文件的网络服务
  • HC32F4A0 10路串口UART 配置
  • 拯救PyCharm:击退IDE崩溃的终极策略
  • 深入解析Unix命令:掌握wc、whereis和which的使用技巧
  • 奥运会大规模使用中国AI大模型!
  • Linux中的线程3
  • 内网权限维持——利用WMI进行权限维持
  • 【数据结构算法经典题目刨析(c语言)】括号匹配问题(图文详解)
  • 浅谈 Spring AOP框架 (1)
  • Linux 面试准备 - 2024
  • C++笔记---类和对象(中)
  • 【C++】入门基础知识
  • AI的应用场景和未来展望
  • vim、sublime、notepad文本编辑器的使用
  • PyCharm中的外部更改识别:终极解决方案指南
  • Qt——QTCreater ui界面如何统一设置字体