Jenkins参数化构建及代码发布

news/2024/7/12 2:25:13 标签: 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: 1

Now 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=$4

CMD="ansible -i /opt/hosts nginx"

if [ "$SERVICE_NAME" = "nginx" ];then
    if [ "$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"
    fi
    if [ "$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.niftyadmin.cn/n/5253529.html

相关文章

x86和ARM中配置无线网SSID和PASSWORD

提供一个可行的方法 1.准备文件 hostapd.conf &#xff1a;是用户控件的守护进程用于无线接入点&#xff08;AP&#xff09;和授权服务器&#xff08;authentication servers)&#xff0c;存放路径&#xff1a;/etc/hostapd/hostapd.conf interfacewlp5s0 drivernl80211 chan…

软件测试(接口测试业务场景测试)

软件测试 手动测试 测试用例8大要素 编号用例名称&#xff08;标题&#xff09;模块优先级预制条件测试数据操作步骤预期结果 接口测试&#xff08;模拟http请求&#xff09; 接口用例设计 防止漏测方便分配工具&#xff0c;评估工作量和时间接口测试测试点 功能 单接口业…

TailwindCSS 配置可视化检查器

问题 TailwindCSS 框架为我们提供了大量默认的类和属性&#xff0c;而且开发者也能够自定义类和配置。 对于初学者来说&#xff0c;这些配置其实是比较复杂的&#xff0c;这也是tailwindcss最大的入手成本&#xff0c;开发者的记忆负担和心智负担也都比较大。 有没有办法能够…

HL7/FHIR 是什么

如果你对上面 2 个单词不熟悉的话&#xff0c;那就需要先脑补下了。 HL7 HL7 可以认为是一个标准化的组织&#xff0c;这个组织主要对标准进行控制。 如果你希望在医疗系统中对数据进行交换&#xff0c;通常 HL7 现在就是事实上的标准了。 FHIR FHIR – Fast Health Inter…

K8S学习指南-minikube的安装

简介 Minikube 是一个用于在本地开发环境中运行 Kubernetes 集群的工具。它允许开发人员在单个节点上体验 Kubernetes&#xff0c;无需配置复杂的生产环境。本指南将详细介绍在 Windows、CentOS 和 Ubuntu 系统上安装 Minikube 的步骤。 1. Windows 系统安装 1.1 &#xff1…

MySQL使用教程

数据构成了我们日益数字化的社会基础。想象一下&#xff0c;从移动应用和银行系统到搜索引擎&#xff0c;再到如 ChatGPT 这样的先进人工智能聊天机器人&#xff0c;这些工具若没有数据支撑&#xff0c;将寸步难行。你有没有好奇过这些海量数据都存放在哪里呢&#xff1f;答案正…

kali linux无法使用root打开vlc观看视频的解决办法

kali linux陆续装了几个视频播放器&#xff0c;都比较不够友好&#xff0c;无奈安装vlc,vlc安装方法就是 apt install vlc这个没什么好说的&#xff0c;多数源都集成这个著名软件了&#xff0c;kali linux打开闪退&#xff0c;终端下运行出现&#xff1a; VLC is not supposed…

如何使用 Explain 分析 SQL 语句?

如何使用 Explain 分析 SQL 语句&#xff1f; MySQL中EXPLAIN命令是我们分析和优化SQL语句的利器。 如何使用EXPLAIN来分析SQL语句&#xff0c;接下来有15个例子&#xff0c;一起学习呗 1. EXPLAIN的基本使用 EXPLAIN可以用于分析MySQL如何执行一个SQL查询&#xff0c;包括如…